2012-06-29 5 views
2

под Debians BASH я могу сделать следующее:

foo=/path/to/some/file 

cat $f[TAB] 

Как вы можете видеть, я могу автозаполнение переменную $ Foo, нажав клавишу TAB.

В Ubuntu (11) поведение не совпадает (я активировал '/ etc/bash_completion' в моем bashrc).

Это работает:

echo $f[TAB] 

Это один не работает:

cat $f[TAB] 

Может кто-нибудь дать мне подсказку, как получить последний работает?

ответ

3

Вы можете удалить спецификацию завершения предусмотренного cat по /etc/bash_completion, выполнив:

complete -r cat 

или вы можете увидеть, если изменения параметров выполнения, предусмотренных в /etc/bash_completion работе в версии Bash, который вы используете:

complete -F _longopt -o filenames -o bashdefault cat 

Если вы используете последнюю версию исправленную в Bash 4.2, есть вариант, который может помочь (я не пробовал):

shopt -s direxpand 
+0

«complete -r cat» решил мою проблему. СПАСИБО. – casper

+0

Хорошо, что исправил мою проблему для «кошки» .. но с помощью «grep» и т. Д. Возникает та же проблема. Должен ли я делать это при каждой программе, которую я использую, или существует глобальный путь? – casper

+0

@casper: Вы можете попробовать заменить '_longopt()' на no-op: '_longopt() {:; } ', но это может нарушить другие вещи. Вы можете запустить цикл: 'для p в cat grep; do complete -r "$ p"; done'. Вы можете изменить '_longopt()', так что, когда '$ cur' начинается с« $ », он устанавливает' COMPREPLY' в 'compgen', состоящий из имен переменных. Могут быть другие способы. Мое второе предложение в моем ответе работает для вас? –

 Смежные вопросы

  • Нет связанных вопросов^_^