Một chút bối cảnh, câu hỏi này là phần tiếp theo của câu hỏi này: Tự động hoàn thành từ xa Bash: thay đổi thư mục 'bắt đầu'
Dù sao, tôi đang viết kịch bản bash tự động hoàn thành tùy chỉnh của mình: Tôi muốn tự động hoàn thành hoạt động giống như cd
vậy, ngoại trừ việc tôi muốn lấy tên từ một thư mục cụ thể, không nhất thiết phải là tên hiện tại. Nó hoạt động tuyệt vời trừ khi tên tập tin có không gian trong đó.
Một ví dụ nhanh. Giả sử thư mục tôi nhận được tên từ đó có hai tệp trong đó: a_file
và another file
(chú ý khoảng trắng). Điều này xảy ra:
my_command
TABTAB
a_file
file
another
Bài thuyết trình không hoàn hảo nhưng ý tưởng là tôi được nhắc với 3 lựa chọn, another file
được chia thành another
và file
. Đầu ra mong muốn sẽ là :
file_1
another file
. Tôi cũng muốn các không gian được thoát tự động:
my_command ano
TAB
my_command another\ file
Đây là kịch bản của tôi.
#! / bin / bash _get_file_list () { dir = "/ một số / đường dẫn /" cd $ dir tìm * -maxdepth 0 } _GetOptMyCommand () { cur địa phương TƯƠNG THÍCH = () cur = $ {COMP_WORDS [COMP_CWORD]} trường hợp "$ cur" trong - *) COMPREPLY = ($ (compgen -W "-h -l --help --list -" - "$ cur")) ;; *) COMPREPLY = ($ (compgen -W "$ (_ get_file_list)" - "$ cur")) ;; esac trả về 0 } hoàn thành -F _GetOptMyCommand my_command
Làm cách nào để xử lý các khoảng trắng trong tên tệp và tạo tập lệnh tự động hoàn thành của tôi như thế cd
nào?
local IFS=$'\n'
dường như là những gì bạn đang tìm kiếm. Đó là những gì làm việc cho tôi.