Псевдонимы
Псевдонимы позволяют заменить строку словом, когда оно используется как первое слово простого командного предложения. Оболочка поддерживает список псевдонимов, которые можно задать и удалить с помощью встроенных команд 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