Есть ли способ расширить псевдонимы, встроенные в Bash?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
Вы можете нажать Ctrl- Alt- eдля выполнения функции readline, shell-expand-line
которая будет выполнять псевдоним, историю и раскрытие слов. Обратите внимание, что на некоторых клавиатурах Metaнет Alt. Возможно, вам придется нажать Escпотом Ctrl-e
Функции alias-expand-line
и history-and-alias-expand-line
не связаны по умолчанию, но вы можете связать их, добавив в ~/.inputrc
файл строки, подобные приведенным ниже .
"\e\C-l": alias-expand-line
который заставил бы Ctrl- Alt- l(строчная буква "ell") выполнять только расширение псевдонима.
"\C-i": "\e\C-l\e\e"
которая создает макрос, который выполняет обаalias-expand-line
иcomplete
. Это зависит от привязки из моего ответа выше и от того, что привязка по умолчанию для Esc-Esc остается на месте. Вы все равно сможете выполнять Esc-Esc, если хотите выполнить завершение по умолчанию.ESC C-e
работает на Bash, ноC-x a
работает на Zsh. Также тестируется на OS X.Control-x: history-and-alias-expand-line
.На самом деле это может быть гораздо более простой способ сделать то, что вы пытаетесь сделать (
bash
версия> = 4.2.29):shopt
«sman
страница: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.htmlисточник
alias ll='ls -l
оболочка будет интерпретировать 'll' как команду / функцию 'll', которая, вероятно, не существует.Это не работает. Но я предполагаю / надеюсь, что что-то подобное можно сделать, чтобы делать то, что вы хотите сделать. Вы должны будете использовать свой собственный скрипт завершения. Вот как вы делаете один:
Теперь поставьте полный файл bash_completion ( http://caliban.org/bash ) и поместите вышеупомянутый скрипт в файл внутри каталога bash_completion.d, который скрипт получит из ссылок URL. Дайте мне знать, если это не сработает.
Благодарю.
источник
Для тех, кто установил zsh и ищет простое решение, globalias может быть вашим другом
для установки просто добавьте "globalias" в список плагинов .zshrc
источник