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


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/"
Гленн Джекман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.