Sử dụng tính năng đường dẫn tự động hoàn thành của thiết bị đầu cuối để nhập vào tập lệnh shell


8

Tôi muốn tạo một tập lệnh: (1) Nhận đường dẫn cho người dùng khả năng sử dụng tab để tự động hoàn tất, sau đó (2) lấy tên tệp từ người dùng và sau đó (3) tạo một tệp tại đường dẫn đó có phần mở rộng. txt.

Câu hỏi của tôi là: Làm thế nào để tôi làm 1.? Làm cách nào để tôi nói bash yêu cầu đầu vào là đường dẫn "tự động hoàn thành", tốt nhất là với một phần của đường dẫn (giả sử ~ / x /) đã được điền theo mặc định?

Lưu ý: các đường dẫn hầu như sẽ luôn bao gồm các khoảng trắng.

Câu trả lời:


15
read -p "enter a directory: " -i "$HOME/x/" -e path

Từ một phiên bash, nhập help read|less


Cảm ơn! Trên osx tôi gặp lỗi này: "-bash: read: -i: tùy chọn không hợp lệ đọc: cách sử dụng: đọc [-ers] [-u fd] [-t timeout] [-p prompt] [-a mảng] [-n nchars] [-d delim] [name ...] "Đây có phải là một thứ osx không?

Nó hoạt động trong Debian, đó là nơi tôi dự định sử dụng nó. :)

bạn có thể có một phiên bản cũ hơn của bash trên máy Mac của bạn:echo $BASH_VERSION
glenn jackman

2
Các -ilá cờ đã được bổ sung trong bash4.0. help '[r]ead'để được giúp đỡ readchỉ. Lưu ý rằng trong khi read -esẽ có thể hoàn thành bên trong ~, nó sẽ không được mở rộng.
Stéphane Chazelas

2
Điều đó có nghĩa là bạn sẽ nhận được dấu ngã theo nghĩa đen trong biến $ path, điều này có thể khó xử lý. Nhìn nhận lại, hãy sử dụng-i "$HOME/x/"
glenn jackman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.