2010-04-11 7 views
7

Tôi đổ mồ hôi qua câu hỏi trên. Câu trả lời tôi sẽ cung cấp đã cho tôi một thời gian để mảnh với nhau, nhưng nó vẫn có vẻ vô vọng nguyên thủy và hacky so với những gì người ta có thể làm được hoàn thành được thiết kế lại để được ít staticky. Tôi gần như sợ hỏi nếu có một số lý do tốt mà logic hoàn thành có vẻ là hoàn toàn ly dị khỏi chương trình mà nó hoàn thành.Làm thế nào để bó hoàn thành bash với một chương trình và có nó hoạt động trong trình bao hiện tại?

Trả lời

8

Tôi đã viết một thư viện dòng lệnh (có thể được nhìn thấy in scala trunk) cho phép bạn lật công tắc để có tùy chọn "--bash". Nếu bạn chạy

./program --bash 

Nó tính toán các tập tin hoàn thành, viết nó ra một tempfile, và vang

. /path/to/temp/file 

ra cửa sổ Console. Kết quả là bạn có thể sử dụng backticks như vậy:

`./program --bash` 

và bạn sẽ phải hoàn thành cho "chương trình" trong vỏ hiện tại vì nó sẽ nguồn các tempfile.

Ví dụ cụ thể: kiểm tra thân cây scala và chạy thử nghiệm/partest.

+3

Bạn có thể thoát khỏi tập tin bằng cách sử dụng temprary đây chuỗi: nguồn/dev/stdin <<< "$ (./ chương trình --bash)" –

+0

Yeah, tôi đã gặp phải đó, nhưng trong việc xây dựng, tôi thấy nó không hoạt động trên OSX. Của bạn! Cảm ơn bạn rất nhiều. – extempore

+0

Từ năm 2017-10-06 liên kết đã chết – Morgen