Предположим, у меня есть псевдоним в оболочке bash. Есть ли простая команда, чтобы распечатать, какую команду будет запускать псевдоним?
Мне очень нравится Ctrl kbd> + Alt kbd> + E kbd>, как я узнал из этого ответа . Он «раскрывает» набранную в настоящее время командную строку, что означает расширение псевдонима (среди прочего).
Что это значит? Он превращает любой псевдоним, который в данный момент может быть записан в командной строке, в псевдоним.
Например, если я наберу:
$ ls
, а затем нажмите Ctrl kbd> + Alt kbd> + E kbd>, это превращается в
$ ls --time-style=locale --color=auto
Вы можете использовать команду which
.
Если вы установите псевдоним для ls
как ls -al
, а затем наберете which ls
, вы увидите:
ls: aliased to ls -al
.
Просто введите alias
в командной строке. Он должен вывести список всех активных в настоящее время псевдонимов.
Или, вы можете набрать alias [command]
, чтобы увидеть, к какому псевдониму добавлен псевдоним, например, если вы хотите узнать, к какому псевдониму ls
был добавлен псевдоним, вы можете сделать alias ls
.
Встроенный type
полезен для этого. Он расскажет вам не только о псевдонимах, но и о функциях, встроенных функциях, ключевых словах и внешних командах.
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmd
будут показывать все команды с таким именем в порядке приоритета, что полезно для указанного выше псевдонима ls
, где сам псевдоним вызывает ls
.
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
Это говорит о том, что при запуске ls
будет использоваться /bin/ls
, и --color=auto
будет включен в список аргументов, в дополнение к любым другим, которые вы добавляете сами.
Строго говоря, правильный ответ использует массив BASH_ALIASES, например :
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars