Gunakan fitur jalur lengkapi otomatis terminal untuk input ke skrip shell

8

Saya ingin membuat skrip yang: (1) Mendapat jalur yang memberi pengguna kemampuan untuk menggunakan tab untuk melengkapi otomatis, kemudian (2) mendapatkan nama file dari pengguna, dan kemudian (3) membuat file di jalur itu dengan ekstensi. txt.

Pertanyaan saya adalah: Bagaimana caranya 1.? Bagaimana saya memberi tahu bash untuk meminta input yang merupakan jalur "autocompletable", lebih disukai dengan bagian dari jalan (katakan ~ / x /) sudah diisi secara default?

Catatan: jalan hampir selalu menyertakan spasi.


sumber

Jawaban:

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

Dari sesi bash, masukkan help read|less

glenn jackman
sumber
Terima kasih! Di osx saya mendapatkan kesalahan ini: "-bash: baca: -i: opsi tidak valid baca: penggunaan: baca [-ers] [-u fd] [-t timeout] [-p prompt] [-p prompt] [-a array] [-n] nchars] [-d delim] [name ...] "Apakah ini hal osx?
Ini berfungsi di Debian, di mana saya berencana untuk menggunakannya. :)
Anda mungkin memiliki versi bash yang lebih lama di mac Anda:echo $BASH_VERSION
glenn jackman
2
The -ibendera ditambahkan pada bash4.0. help '[r]ead'untuk mendapatkan bantuan readhanya. Perhatikan bahwa sementara read -eakan bisa menyelesaikan di dalamnya ~, itu tidak akan diperluas.
Stéphane Chazelas
2
Ini berarti Anda akan mendapatkan tilde literal dalam variabel $ path, yang mungkin sulit ditangani. Di belakang, gunakan-i "$HOME/x/"
glenn jackman