Псевдонимы в bash

Псевдонимы в bash позволяют заменить строку на одно слово, когда псевдоним используется в качестве первого слова простой команды. Shell поддерживает список псевдонимов которые можно включать и отключать с помощью встроенных команд alias и unalias. Первое слово каждой простой команды, если оно без кавычек, проверяется, чтобы увидеть имеет ли оно псевдоним. Если слово псевдоним имеет, то оно заменяется текстом псевдонима. В псевдониме не может быть символов «/», «$», «`», и «=», а так же метасимволов или символов заключенных в кавычки. Заменяемый текст, может содержать любые допустимые ко вводу в shell символы в том числе метасимволы. Первое слово заменяемого текста проверяется на псевдонимы, но слово идентичное расширяемому псевдониму не расширяется второй раз. Это значит что может быть один псевдоним, например ls расширяемый ls -F, и bash не пытается рекурсивно расширять замененный текст. Если последний символ значения псевдонима пуст, то следующее слово команды, после псевдонима, также проверяется для расширения псевдонима.

Псевдонимы создаются при помощи команды alias, и удаляются при помощи команды unalias.

Не существует механизма для использования аргументов в заменяемом тексте. Если же аргумент необходим, должны быть использованны функции shell.

Псевдонимы не расширяются когда shell не является интерактивным, shell опция expand_aliases должна быть включена, это делается с использованием shopt.

shopt -s expand_aliases

Здесь «shopt» команда оболочки которая управляет опциями, «-s» разрешает опцию, а «expand_aliases» является необходимой нам опцией.

Правила касающиеся определения и использования псевдонимов несколько запутаны. Bash всегда читает по крайней мере одну полную введенную строку, прежде чем выполнять любые команды этой строки. Псевдонимы расширяются при чтении команды, но не при её выполнении. Таким образом, определение псевдонима, появляется в той же строке, иная команда в этой строке не вступает в силу до следующего ввода чтения строки. Команды следующие за определением псевдонима в строке, не влияют на новый псевдоним.. Это поведение тоже является проблемой когда выполняются функции. Псевдонимы расширяются когда функция определяется для чтения, а не тогда, когда она непосредственно выполняется, так как определение функции само по себе является составной командой. Чтобы обезопасить себя, всегда ставьте определения псевдонимов в отдельной строке, и не используйте псевдонимы в составных командах.

Для большинства целей, псевдонимы заменяются shell функциями.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *