2009-04-29 29 views
12

Tôi có một danh sách các tiểu sử chưa có tên trong số ~/.unison/*.prf.hoàn tất bash cho một số loại tệp nhất định trong một thư mục đặc biệt

Tôi muốn hoàn thành bash để khi nhập unison hoặc unison-gtk và tab truy cập, nó sẽ liệt kê các tệp .prf từ thư mục đó mà không có phần .prf.

Có lẽ một ví dụ sẽ được rõ ràng hơn:

$ ls ~/.unison/*.prf 
default.prf dot-mozilla.prf to-desktop.prf 

$ cd ~ # just to show you don't have to be in the ~/.unison folder 
$ unison to<tab> 
$ unison to-desktop 

Tôi thấy trước cần này cho một công cụ khác là tốt, vì vậy nó sẽ được thuận tiện nếu có bộ phận mà có thể được tái sử dụng.

Trả lời

15

Nếu bạn đang chạy debian/ubuntu hoặc các bản phân phối GNU/Linux khác, cần có ví dụ về loại hoàn thành này trong thư mục /etc/bash_completion.d/ của bạn. Dưới đây là một ví dụ về cách bạn có thể thiết lập một kịch bản hoàn thành cho unison:

have unison && 
_unison_show() 
{ 
     local cur 

     COMPREPLY=() 
     cur=${COMP_WORDS[COMP_CWORD]} 
     COMPREPLY=($(compgen -W "$(for x in ~/.unison/*.prf; do echo $(basename ${x%.prf}); done)" -- $cur)) 
} 
complete -F _unison_show unison 
+0

Các công trình lớn, những thay đổi duy nhất mà tôi đã làm là hoàn -o nospace -F _unison_show unison unison-gtk –

Các vấn đề liên quan