Bash-дополнение: всегда показывать все файлы

Bash-дополнение: всегда показывать все файлы

Недавно я установил bash-completion(через homebrew). Теперь он пропускает файлы в списке завершения, которые яхотетьего для отображения и полностью опускает допустимые варианты, такие как этот:

[alex@mbp foo]$ ls
bar.csv foo.csv
[alex@mbp foo]$ sh ../dosomething.sh fo<TAB>
((nothing shown))

Как заядлый пользователь командной строки, это меня крайне раздражает. Может кто-нибудь подскажет, как отключить это поведение? Я не смог найти ничего полезного в документации или Google.

Bash-дополнениеЧасто задаваемые вопросыговорит:

В. Код завершения bash не позволяет некоторым командам завершаться на файлах с расширениями, которые являются допустимыми в моей среде. Нужно ли мне отключать завершение для этой команды, чтобы завершить ее на нужных мне файлах?

A. Нет. Используйте M-/, чтобы (по словам страницы руководства bash) попытаться завершить имя файла в тексте слева от курсора. Это позволит обойти любые ограничения на тип файла, наложенные кодом завершения bash.

Но для меня это неприемлемое решение — я хочу, чтобы «TAB» показывал все файлы/каталоги независимо от того, является ли расширение допустимым для файла или нет (именно так это работало у меня последние 20 лет).

Как мне этого добиться?

Я бы предпочел настройку .bashrc/ .bash_profileвместо удаления глобальных скриптов завершения. Вот как я в настоящее время включаю bash-completion (это просто стандартная установка homebrew):

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

Обновление: Я видел этоBash автодополнение имени файла с помощью клавиши Tabно это не совсем то, что мне нужно, так как это требует слишком много ручной работы для каждого возможного расширения файла на Земле/в моей системе.

решение1

Принятый ответ по-прежнему не решает проблему, поскольку нарушает завершение команды (например, «pyt+ TAB» для получения python и т. д.), поскольку оно не включено в complete-filename.

complete -o default python

Это не исправит проблему для всех команд (в этом примере только "python"), но исправит ее для определенных команд, которые ведут себя крайне неправильно. К сожалению, похоже, нет простого способа установить "default" (т. е. значение по умолчанию Readline) для всего, это нужно сделать для каждой команды, которую вы можете использовать. Или используйте обходной путь .inputrc выше.

решение2

Также меня это раздражает, поэтому я прочитал руководство по bash. Я считаю, что желаемого поведения можно добиться с помощью этого ~/.inputrcфайла:

TAB: complete-filename
M-/: complete

Обычное завершение с полным набором правил сопоставляется с , Meta-/а завершение только по имени файла сопоставляется с TAB.

Связанный контент