Используйте функцию автозаполнения пути терминала для ввода в сценарий оболочки

8

Я хочу создать скрипт, который: (1) получает путь, дающий пользователю возможность использовать табуляцию для автозаполнения, затем (2) получает имя пользователя от файла, а затем (3) создает файл по этому пути с расширением. текст.

Мой вопрос: как мне сделать 1.? Как мне сказать bash запросить ввод, который является «автозаполняемым» путем, предпочтительно с частью пути (скажем, ~ / x /), уже заполненным по умолчанию?

Примечание: пути почти всегда будут содержать пробелы.


источник

Ответы:

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

В bash-сессии введите help read|less

Гленн Джекман
источник
Спасибо! На OSX я получаю эту ошибку: "-bash: чтение: -i: недопустимая опция чтение: использование: чтение [-ers] [-u fd] [-t тайм-аут] [-p приглашение] [-a массив] [-n nchars] [-d delim] [name ...] "Это штука с осом?
Он работает в Debian, и я планирую его использовать. :)
у вас, вероятно, есть старая версия bash на вашем Mac:echo $BASH_VERSION
Гленн Джекман
2
-iФлаг был добавлен в bash4,0. help '[r]ead'чтобы получить помощь readтолько для . Обратите внимание, что, хотя read -eсможет завершить внутри ~, он не будет расширяться.
Стефан Шазелас
2
Это означает, что вы получите буквальную тильду в переменной $ path, с которой может быть трудно справиться. Оглядываясь назад, используйте-i "$HOME/x/"
Гленн Джекман