Я использую, среди прочего, Bash 4.2.37 на Linux Mint 14.
Когда я автоматически заполняю имя переменной среды, печатая Tab, оно расширяется до имени переменной, за которым следует пробел.
Если значением переменной является имя каталога, я хочу, чтобы оно расширилось до имени переменной, за которым следует /
.
Например, если я наберу:
$ ls $HOM<tab>
он расширяется до:
$ ls $HOME _
где _
отмечает местоположение курсора. Проблема в том, что я обычно хочу продолжать вводить имя некоторого файла или каталога в моем домашнем каталоге, что означает, что я должен набрать, backspaceа затем /
.
Поэтому я хочу расширить вышеприведенное:
$ ls $HOME/_
То же самое происходит, когда я набрал полное имя переменной; после ls $HOME
, tabдобавляет пробел, и я хочу добавить /
.
(И, конечно, я не хочу добавлять a, /
если значение переменной не является именем каталога.)
Есть ли какой-то способ, которым я могу сказать bash вести себя так, как я хочу, с помощью команд bash или путем обновления моего $HOME/.inputrc
?
Примечание: я специально ищу способ заставить tabсебя вести себя так, как я хочу. Способы достижения одинакового поведения при разных нажатиях клавиш были бы интересны, но не отвечали бы на мой вопрос.
(Я отключил /etc/profile.d/bash_completion.sh
в своей системе, потому что она плохо взаимодействует с set -o nounset
. Быстрый эксперимент показывает, что это, вероятно, не относится к моему вопросу.)
Кстати, tcsh делает это: учитывая переменную окружения $FOOBAR
, типизация $FOOBA<tab>
расширяется до $FOOBAR/
того, ссылается ли она на каталог $FOOBAR
(с пробелом), если нет. Нет, этого недостаточно, чтобы убедить меня вернуться к tcsh. Zsh делает это тоже.
источник
Ответы:
Эта функция реализована в bash 4.3, выпущенном 2014-02-26.
Цитирование
NEWS
файла (входит в верхний уровеньbash-4.3.tar.gz
, см. Также подпись GPG ):Быстрый эксперимент с копией, созданной из источника, показывает, что если я наберу
теперь он расширяется до
(Кстати, Zsh также делает это.)
источник
поможет, места не будет, поэтому вы сможете продолжить ввод, но он заменит переменную окружения своим содержимым.
См. Alsp /programming/6418493/bash-variable-expansion-on-tab-complete
источник