Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 3: Среда окружения Bash | Вперед |
Алиасы
Что такое алиасы?
Алиас позволяет заменить строкой слово, когда оно используется в качестве первого слова в простой команде. Оболочка поддерживает использование списка алиасов, которые можно включать и отключать с помощью встроенных команд alias и unalias. Если набрать команду alias без параметров, то будет выдан список алиасов, известных в текущей командной оболочке.
franky: ~> alias alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias PAGER='less -r' alias Txterm='export TERM=xterm' alias XARGS='xargs -r' alias cdrecord='cdrecord -dev 0,0,0 -speed=8' alias e='vi' alias egrep='grep -E' alias ewformat='fdformat -n /dev/fd0u1743; ewfsck' alias fgrep='grep -F' alias ftp='ncftp -d15' alias h='history 10' alias fformat='fdformat /dev/fd0H1440' alias j='jobs -l' alias ksane='setterm -reset' alias ls='ls -F --color=auto' alias m='less' alias md='mkdir' alias od='od -Ax -ta -txC' alias p='pstree -p' alias ping='ping -vc1' alias sb='ssh blubber' alias sl='ls' alias ss='ssh octarine' alias tar='gtar' alias tmp='cd /tmp' alias unaliasall='unalias -a' alias vi='eval `resize`;vi' alias vt100='export TERM=vt100' alias which='type' alias xt='xterm -bg black -fg white &' franky ~>
Алиасы удобны для задания версии команды, используемой по умолчанию, в случае, если команда существует в вашей системе в нескольких версиях, либо для задания параметров, используемых в команде по умолчанию. Другое использование алиасов - коррекция неправильно набираемых команд.
Первое слово каждой простой команды, если оно указано без кавычек, проверяется на предмет того, не
является ли оно алиасом. Если это так, то слово заменяется текстом алиаса. Алиас и заменяющий
текст может быть любым текстом, который можно ввести в командной оболочке, в том числе он может
содержать метасимволы оболочки, за исключением лишь того, что в имени алиаса нельзя использовать
символ "=". Первое слово заменяющего текста снова проверяется, является ли оно алиасом, но замена
во второй раз не происходит, если это слово совпадает с алиасом, для которого только что была
выполнена замена. Т. е. можно задать алиас ls для строки ls -F
и Bash не будет пытаться рекурсивно подставлять заменяющий текст. Если последний символ текста, подставленного вместо алиаса, является символом пробела или табуляции, то следующее слово, идущее в команде за алиасом, также будет проверяться с тем, чтобы выяснить, является ли оно алиасом.
В случае, если командная оболочка неинтерактивная и с помощью встроенной команды shopt не был установлен параметр expand_aliases
, подстановка алиасов не происходит.
Создание и удаление алиасов
Алиасы создаются с помощью встроенной команды alias. Чтобы алиасом можно было пользоваться постоянно, добавьте команду alias в один из ваших файлов инициализации командной оболочки; если вы просто введете алиас в командной строке, он будет распознаваться только в текущей командной оболочке.
franky ~> alias dh='df -h' franky ~> dh Filesystem Size Used Avail Use% Mounted on /dev/hda7 1.3G 272M 1018M 22% / /dev/hda1 121M 9.4M 105M 9% /boot /dev/hda2 13G 8.7G 3.7G 70% /home /dev/hda3 13G 5.3G 7.1G 43% /opt none 243M 0 243M 0% /dev/shm /dev/hda6 3.9G 3.2G 572M 85% /usr /dev/hda5 5.2G 4.3G 725M 86% /var franky ~> unalias dh franky ~> dh bash: dh: command not found franky ~>
Bash всегда считывает, по меньшей мере, одну полную строку ввода прежде, чем выполнить какую-нибудь из команд, находящуюся в этой строке. Алиасы раскрываются, когда команда читается, а не когда они исполняется. Таким образом, определение алиаса, расположенное в той же строке, в которой расположена следующая команда, вступят в силу только тогда, когда будет считываться следующая строка ввода. Новый алиас не оказывает влияние на команды, следующие за алиасом в той же самой строке ввода. Когда выполняются функции, поведение алиасов точно такое же. Поскольку функция сама по себе является составной командой, алиасы заменяются, когда происходит чтение определения функции, а не когда функция исполняется. В результате алиасы, определенные в функции, будут недоступны до тех пор, пока эта функция не будет выполнена. Чтобы не возникало подобных проблем, всегда помещайте определение алиаса в отдельную строку и не используйте команду alias в составной команде.
Алиасы не наследуются дочерними процессами. Командная оболочка Bourne (sh) не распознает алиасы.
Подробнее о функциях смотрите в главе 11 "Функции".
Функции выполняются быстрее | |
Алиасы просматриваются после функций и, следовательно, их поиск происходит медленнее. Хотя алиасы проще для понимания, практически для любых задач предпочтительнее пользоваться функциями. |
Предыдущий раздел: | Оглавление | Следующий раздел: |
Подстановки, выполняемые командной оболочкой | Подробнее о параметрах Bash |