Псевдонимы
Псевдонимы позволяют подставить строку вместо слова, находящегося в позиции ввода, где оно может быть первым словом простой команды. У псевдонимов есть имена и соответствующие им значения, которые задаются и отменяются с помощью встроенных команд alias и unalias (см. Встроенные команды оболочки).
Если оболочка считывает слово без кавычек в подходящей позиции, она проверяет, совпадает ли это слово с именем псевдонима. При совпадении оболочка заменяет слово значением псевдонима и считывает это значение так, как если бы оно было считано вместо слова. Прежде чем выполнять подстановку псевдонима, оболочка не анализирует символы, следующие за словом.
Символы «/», «$», «`», «=», а также любые метасимволы оболочки или символы кавычек, перечисленные выше, не могут присутствовать в имени псевдонима. Текст подстановки может содержать любые допустимые для оболочки входные данные, включая метасимволы оболочки. Первое слово текста подстановки проверяется на наличие псевдонимов, но слово, совпадающее с раскрываемым псевдонимом, повторно не раскрывается. Это означает, что можно, например, определить псевдоним ls для "ls -F", и Bash не будет пытаться рекурсивно раскрыть текст подстановки.
Если последним символом значения псевдонима является blank, оболочка проверяет следующее слово команды после псевдонима на наличие псевдонима для раскрытия.
Псевдонимы создаются и выводятся с помощью команды alias, а удаляются с помощью команды unalias.
Механизма передачи аргументов в текст подстановки, как в csh, не существует. Если нужны аргументы, используйте вместо этого функцию оболочки (см. Функции оболочки).
Псевдонимы не раскрываются, если оболочка работает в неинтерактивном режиме, за исключением случаев, когда задан параметр оболочки expand_aliases с помощью shopt (см. Встроенная команда shopt).
Правила, касающиеся определения и использования псевдонимов, несколько запутанны. Bash всегда считывает как минимум одну полную строку ввода, а также все строки, составляющие составную команду, прежде чем выполнить какую-либо из команд в этой строке или составную команду. Псевдонимы раскрываются при считывании команды, а не при её выполнении. Поэтому определение псевдонима, расположенное в одной строке с другой командой, вступает в силу только после того, как оболочка считает следующую строку ввода, а определение псевдонима в составной команде вступает в силу только после того, как оболочка разберёт и выполнит всю составную команду. Команды, следующие за определением псевдонима в этой строке или в оставшейся части составной команды, не затрагиваются новым псевдонимом. Такое поведение также важно учитывать при выполнении функций. Псевдонимы раскрываются при считывании определения функции, а не при её выполнении, поскольку определение функции само является командой. Вследствие этого псевдонимы, определённые в функции, становятся доступными только после выполнения этой функции. Чтобы избежать проблем, всегда размещайте определения псевдонимов в отдельных строках и не используйте alias в составных командах.
Почти во всех случаях функции оболочки предпочтительнее псевдонимов.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Aliases.html