Иногда при доступе к различным каталогам в большинстве случаев я запоминаю имена или, по крайней мере, часть имен каталогов в нашей системе Linux. Но некоторые из каталогов имеют имена, начинающиеся с заглавных букв первого символа или одного из символов в середине имени. Верхний регистр.
Может кто-нибудь предложить, как я могу сделать аргументы после cd
команды case INSENSITIVE, чтобы, если я выполняю cd BackupDirectory
или cd backupdirectory
он мог ввести имя каталога BackupDirectory.
Конечно, я не хочу придумывать вещи для других пользователей, поэтому, если вышеприведенное возможно, возможно ли, чтобы изменения могли быть применены только к сеансу, который я использую, и не влияли бы на других пользователей?
Хорошо, я примерял, set completion-ignore-case
но это просто не работает. Это просто помогает в этом, если я набираю cd b
и / Tabили Esc Escзаполняю имя каталога, игнорируя регистр. Но, что мне нужно, если я делаю cd backupdirectory
, он просто игнорирует дело и входит BackupDirectory
самостоятельно.
источник
backUP
иbackUp
какbackup
нет, в какой каталог вы хотите перейти?mc
или переход на графический интерфейс? Делает жизнь намного проще.Ответы:
Включение
cdspell
поможет:Со
man
страницы:источник
удар
set completion-ignore-case on
в~/.inputrc
(илиbind 'set completion-ignore-case on'
в~/.bashrc
) будет моя рекомендация. Если вы собираетесь ввести полное имя, зачем нажимать Shiftклавишу несколькими нажатиями клавиши?Но если вы действительно этого хотите, вот обертка,
cd
которая пытается найти точное совпадение, а если его нет, ищет совпадение без учета регистра и выполняет его, если оно уникально. Он используетnocaseglob
опцию shell для нечувствительного к регистру глобирования и превращает аргумент в глоб, добавляя@()
(что ничего не соответствует и требуетextglob
).extglob
Опция должна быть включена при определении функции, в противном случае удар не может даже разобрать его. Эта функция не поддерживаетCDPATH
.Ksh
Пока я в этом, вот аналогичная функция для ksh93.
~(i)
Модифицирована для случая нечувствительного соответствия кажется несовместимым с/
суффиксом , чтобы соответствовать только каталогам (это может быть ошибка в моем выпуске KSH). Поэтому я использую другую стратегию, чтобы отсеять не каталоги.Zsh
Наконец, вот zsh-версия. Опять же, разрешение завершения без учета регистра, вероятно, является наилучшим вариантом. Следующая настройка возвращается к нечувствительному к регистру глобированию, если нет точного соответствия:
Удалить,
''
чтобы показать все регистрозависимые совпадения, даже если есть точное совпадение. Вы можете установить это из интерфейса менюcompinstall
.источник
inputrc
он работал. Как это:echo "set completion-ignore-case on" >> ~/.inputrc
cd:cd:17: no such file or directory: videos
(у меня есть dir под названиемVideos
)emulate -L zsh
наemulate -LR zsh
? (Между прочим, я только что исправил ошибку, которая должна былаemulate -L zsh
бытьemulate zsh
, иначе это испортило бы ваши параметры оболочки.)