С тех пор, как завершение табуляции стало стандартной функцией в оболочках, я очень доволен ею. Мне даже нравится интеллектуальное завершение Bash (где он ищет только файлы PDF, если я наберу evince foo <TAB>) - при условии, что он угадывает правильно.
Это разрушает другой счастливый день, когда Bash использует свое интеллектуальное завершение, чтобы отказаться от завершения.
Сегодня я хотел:
tar xvf centos5.8_x86_1.ova
Итак, я вошел:
tar xvf cent<TAB>
и Bash отказывается завершать путь, потому что .ova-файлы - это не то, что вы обычно используете с tar.
Я знаю, что могу удалить пакет bash-complete, чтобы удалить интеллектуальное завершение. Но могу ли я взять свой пирог и съесть его тоже?
Могу ли я попросить bash сначала использовать интеллектуальное завершение, а если это не удастся, то использовать не интеллектуальное завершение?
источник
Ответы:
Следующее должно включить нормальное завершение bash после того, как все «интеллектуальные» завершения завершились неудачно для программ tar, vim и emacs:
см. также соответствующую страницу в онлайн-руководстве по bash.
Предостережение: вы получаете нормальное поведение для типа завершения (команды / имена файлов / имена пользователей и т. Д.), Определенного интеллектуальным завершением для данной команды, например, завершение для
service
не завершит имена файлов, даже если вы вызоветеcomplete -o bashdefault service
.В этом и других случаях, когда интеллектуальное автозаполнение завершается неудачно, вы всегда можете нажать
Alt-/
(илиM-/
в примечании руководства bash), чтобы завершить имена файлов почти так же, как TAB работает, если интеллектуальное завершение отключено (почти таким же образом, чтоM-/
не полные образцы как*.txt
). Смотрите здесь последовательности клавиш для других типов дополнений, таких как имена команд и пользователей.источник
Завершение bash является расширением стандартного завершения bash и само является программой bash. Так что, если вы хотите изменить работу программы, просто измените ее. Это бесплатное программное обеспечение, вы можете сделать это бесплатно. Для конкретного случая
tar
команды это файл/usr/share/bash-completion/completions/tar
. Дляtar
автозаполнения файла с расширениемova
, просто добавьте его в строкутак сказано
Обратите внимание, что это путь и код, существующий для Debian Wheezy (текущая стабильная версия). Другой дистрибутив или версия могут иметь другой код, но идея та же. Откройте код и настройте его, чтобы сделать то, что вы хотите.
Изменить: я только заметил, что вопрос был о каждый раз, когда он не находит соответствия, а не только конкретный случай добавления
ova
вtar
. Может быть, кому-то еще будет полезно узнать, где они могут искать источник.источник