Библиотека сайта rus-linux.net
Команда alias упрощает работу в консоли
Алексей Дмитриев, 15 апреля 2009
Статья из серии HuMan
Команда alias позволяет пользователю создавать простые псевдонимы для команд любой сложности (вместе с опциями, аргументами, перенаправлениями и программными каналами). После того, как псевдонимы созданы, их можно использовать как обычные команды.Команда alias встроена в различные шеллы, включая ash, bash (оболочка большинства Линукс систем по умолчанию), csh и ksh. Это один из способов настройки шелла (другой способ - установление переменных среды). Псевдонимы работают только в том шелле, в котором были созданы, и только под аккаунтом пользователя, создавшего их (если это не суперпользователь, который может создавать псевдонимы для всех пользователей).
Синтаксис команды alias различен в разных шеллах. Мы будем рассматривать только оболочку bash.
Просмотр уже созданных псевдонимов
При использовании без аргумента (с опцией или без опции -p), команда alias выводит список уже установленных в системе псевдонимов для данного пользователя:
$ alias alias d='dir' alias dir='/bin/ls $LS_OPTIONS --format=vertical' alias ls='/bin/ls $LS_OPTIONS' alias mc='. /usr/share/mc/bin/mc-wrapper.sh' alias v='vdir' alias vdir='/bin/ls $LS_OPTIONS --format=long'
Перечисленные псевдонимы являются общесистемными и создаются автоматически для каждого нового пользователя в данной оболочке. Для того чтобы просмотреть уже работающие псевдонимы для других шеллов, нужно сначала перейти в нужную оболочку, а затем дать команду alias, как показано выше.
Создание псевдонимов
В общем виде команда alias применяется так:$ alias ИМЯ="ЗНАЧЕНИЕ"
ИМЯ - это имя нового псевдонима, а ЗНАЧЕНИЕ - это та команда (или группа команд), которые псевдоним запускает. ИМЯ и текст ЗНАЧЕНИЯ могут содержать любые символы, кроме символа знака равенства (=).
Команды, содержащие опции, аргументы, операторы перенаправления и программные каналы (pipes), заключаются в кавычки, двойные или одинарные. Не допускаются пробелы до или после знака равенства. Одновременно может быть создано несколько псевдонимов.
Простейший пример создания псевдонима:
$ alias p="pwd"
Здесь псевдоним p вводится для замены распространенной команды pwd, которая выводит имя директории, в которой пользователь работает в настоящее время.
Теперь, чтобы узнать текущую директорию, достаточно ввести в командной строке псевдоним "p":
$ p /home/ya
Можно создать псевдоним с тем же именем, что и исходная команда, но заменять он будет одноименную команду с опциями или аргументами. Например:
$ alias ls="ls -al"
Команда ls выводит список файлов и субдиректорий текущей директории, опция -a позволяет просматривать скрытые файлы, опция -l означает полный (детальный) формат выводимого списка.
Интересно, что теперь, при введении в командную строку выражения "ls" будет работать псевдоним, а не исходная команда. Если нужно запустить исходную команду, то следует предварить ее обратным слэшем - \ls (без пробела).
Как уже говорилось, наряду с двойными кавычками можно применять одинарные, последние даже предпочтительнее для английской раскладки клавиатуры, так как не нужно нажимать клавишу SHIFT. Например, можно еще больше упростить последний пример:
$ alias l='ls -al'
В ЗНАЧЕНИЕ псевдонима можно также включать аргументы:
$ alias l='ls -al /etc'
что позволит введением в командную строку одной буквы "l" просмотреть содержимое директории /etc.
В псевдоним могут быть включены несколько команд. Для этого их нужно вводить внутри кавычек через точку с запятой:
$ alias pl='pwd; ls'
при этом будет выполнена первая команда, а немедленно за ней - вторая:
$ pl /home/ya Desktop/
Здесь /home/ya
это вывод команды pwd, а Desktop/
- вывод команды ls.
За один раз можно создавать несколько псевдонимов, для этого пары ИМЯ='ЗНАЧЕНИЕ' нужно разделять пробелом (а не точкой с запятой, как пишут в устаревших руководствах):
$ alias d='ls /dev' u='ls /usr'
В состав псевдонима возможно включать даже программные каналы:
$ alias dir="ls -al | grep ^d"
При запуске этого псевдонима команда ls -al выведет содержимое текущей директории, а команда grep ^d отберет из них все строки, начинающиеся с буквы "d", то есть все субдиректории.
Созданный псевдоним может применяться с опциями и аргументами исходной программы. Допустим, что псевдоним l заменяет команду ls -a. Тогда мы можем вводить его в командную строку с аргументом команды ls:
$ l /etc
или с опциями команды ls:
$ l -l /etc
Опции команды alias
Команда alias необычна тем, что имеет всего одну опцию -p. Эта опция заставляет команду выводить список уже созданных в системе псевдонимов, то есть то же самое, что делает команда alias без опций и аргументов. Поэтому опцию -p имеет смысл использовать только при создании новых псевдонимов, чтобы "одним махом" создать псевдоним и просмотреть список уже созданных. Например:$ alias -p p='pwd'
Применение псевдонимов
1. Чтобы уменьшить размер набираемого в командной строке текста. Псевдонимами заменяются команды или группы команд, которые долго или неудобно набирать на клавиатуре. Эти команды могут открывать часто используемые для просмотра или редактирования файлы.Например, если пользователь имеет доступ к конфигурационному файлу web-сервера Apache, находящийся на некоторых системах в /etc/httpd/conf/httpd.conf, и использует редактор gedit для просмотра этого файла, то он вынужден каждый раз набирать в командной строке следующую команду:
$ gedit /etc/httpd/conf/httpd.conf
Это довольно неудобно и быстро надоест. Гораздо лучше заменить эту команду псевдонимом:
$ alias a="gedit /etc/httpd/conf/httpd.conf"
и для открытия конфигурационного файла достаточно будет ввести в командную строку одну букву:
$ a
2. Чтобы изменить поведение команды по умолчанию. Например, введя псевдоним
$ alias ls="ls -a"
можно быть уверенным, что команда ls покажет также скрытые файлы, чего по умолчанию она не делает.
Или взять команду df, которая выводит информацию обо всех разделах, смонтированных в системе:
$ df Файловая система 1K-блоков Исп Доступно Исп% смонтирована на /dev/sda6 15488716 6145052 8556884 42% / /dev/sda2 78144508 36647484 41497024 47% /mnt/win-c
Не правда ли, информация не совсем доходчива, так как единицей размера раздела по умолчанию выбран однокилобайтный блок (это тянется с тех дней, когда килобайт считался большим количеством). Существует опция -h (от английского "human readable" - понятно человеку), которая использует в качестве единиц размера MB (мегабайт) и GB (гигабайт):
$ df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda6 15G 5,9G 8,2G 42% / /dev/sda2 75G 35G 40G 47% /mnt/win-c
Так намного нагляднее. Поэтому имеет смысл ввести псевдоним для команды df -h:
$ alias df="df -h"
Полезным также будет псевдоним
alias grep="grep --color"
который сделает вывод команды grep цветным.
3. Чтобы избежать последствий неправильного набора команд. Скажем, некий пользователь постоянно ошибается при наборе какой-либо команды, например постоянно печатает pdw вместо pwd. Тогда он может создать псевдоним:
$ alias pdw="pwd"
и больше не задумываться о том, правильно ли он ввел команду.
4. Чтобы повысить безопасность системы, сделав некоторые "опасные" команды интерактивными. Это заставит пользователя подтверждать свои действия. Например команда rm удаляет файлы и директории без возможности восстановления, поэтому имеет смысл создать для нее псевдоним:
$ alias rm="rm -i"
В интерактивном варианте команда не столь опасна.
Или взять команду cp, копирующую содержимое одного файла в другой. Если по ошибке указать в качестве аргумента существующий файл, то команда сотрет его содержимое и перезапишет новым. Избежать этого поможет псевдоним:
$ alias cp="cp -i"
который заставит подтвердить операцию копирования, снизив тем самым риск ошибки.
5. Чтобы стандартизировать названия команд в различных операционных системах. Скажем, популярный текстовой редактор vi имеет разное название в разных ОС (vim, nvi, elvis, и проч.), но если заранее создать в каждой системе соответствующие псевдонимы, то в любой из них текстовый редактор будет запускаться просто командой vi. Например, в моей системе по умолчанию установлен редактор vim, но запускается он не только командой vim, но и vi, так как псевдоним alias vi="vim"
также устанавливается по умолчанию для шеллов bash, csh и tcsh.
Для людей, привыкших к командной строке MS-DOS, можно создать псевдонимы Юниксовых команд в стиле MS-DOS:
alias dir="ls" alias copy="cp" alias rename="mv" alias md="mkdir" alias rd="rmdir" alias del="rm -i"
Правда многие опытные пользователи Юниксовидных систем считают, что лучше сразу привыкать к правильной терминологии Юникс.
Как сделать псевдонимы постоянными
Псевдонимы, созданные при помощи команды alias методом, описанным выше, будут работать только до выхода пользователя из системы или до первой перезагрузки компьютера. Если для крупных серверов, которые работают непрерывно, это не очень важно, то для домашних компьютеров, выключаемых ежедневно, это сводит на нет все преимущества псевдонимов.К счастью любой псевдоним может быть сделан постоянным. Для этого его надо вписать в соответствующий конфигурационный файл. Название и местонахождение таких файлов различаются в разных операционных системах.
Универсальным является метод с использованием файла bashrc.
Сначала нужно проверить наличие файла bashrc в системе. Под аккаунтом суперпользователя (root) даем команду locate:
# locate bashrc
(если команда не срабатывает - "ругается", то нужно обновить базу данных при помощи команд updatedb
или locate -u
).
В зависимости от наличия файлов типа bashrc (.bashrc, bash.bashrc и т.п.) в различных директориях, возможно несколько вариантов:
1. Чтобы создать постоянные псевдонимы для данного пользователя:
Если в домашней директории есть файл .bashrc (скрытый), то нужно просто вписать в конец этого файла нужные псевдонимы по одному на строку. Например:
alias e='cat /etc/fstab' alias grep='grep --color' и так далее...
Если в домашней директории не имеется файла .bashrc, то нужно создать текстовый файл и назвать его .bashrc. Затем вписать туда нужные псевдонимы как показано выше.
Заработают вновь созданные псевдонимы при следующем входе пользователя в систему.
2. Чтобы создать постоянные псевдонимы для всех пользователей:
Если в системе есть файл /etc/bashrc, то следует добавить нужные псевдонимы в список уже имеющихся, если таковые есть. Если их нет, то добавить псевдонимы в конец файла.
Если файл /etc/bashrc отсутствует, то необходимо открыть файл /etc/profile в текстовом редакторе под аккаунтом суперпользователя. Найти строку # include /etc/bashrc if it exists
. Если такой строки нет, то вписать ее в конец файла. Под данной строкой нужно написать следующий скрипт:
if [ -f /etc/bashrc ]; then source /etc/bashrc fi
После этого создать текстовый файл /etc/bashrc, в который и вписать нужные псевдонимы.
Новые псевдонимы будут работать после перезагрузки системы для всех пользователей, кроме root'а.
3. Чтобы создать постоянные псевдонимы для пользователя root:
Если существует файл /root/.bashrc (скрытый), то вписать нужные псевдонимы в этот файл.
Если такового файла нет, то следует создать его и вписать псевдонимы.
Тем, кто не хочет изменять свою систему, создавая новые системные файлы и запуская самодельные скрипты, следует попытаться найти файлы, в которых устанавливаются псевдонимы. Сначала нужно убедиться, что такие псевдонимы в системе установлены:
$ alias
(под аккаунтом рядового пользователя, так как для пользователя root общесистемные псевдонимы часто не работают).
Если команда alias возвращает список установленных псевдонимов, значит должен существовать файл, в котором они прописаны.
Для начала нужно внимательно просмотреть все файлы, содержащие в своем названии выражение bashrc (.bashrc, bash.bashrc и т.п.). Возможно, там нет самих псевдонимов, зато есть указание на файл, в котором они записаны, либо на скрипт, который их устанавливает.
Если файлы типа bashrc не найдены, следует внимательно просмотреть файл /etc/profile, скорее всего там окажется что-нибудь вроде:
# Append any additional sh scripts found in /etc/profile.d/: for profile_script in /etc/profile.d/*.sh ; do if [ -x $profile_script ]; then . $profile_script fi done unset profile_script
В таком случае следует просмотреть скрипты, расположенные в директории /etc/profile.d/, там может быть скрипт /etc/profile.d/alias.sh, в котором и прописаны псевдонимы. Остается добавить туда свои. Если скрипта alias.sh или подобного нет, то придется просмотреть все скрипты в директории /etc/profile.d/. Например у меня в системе, псевдонимы нашлись в скрипте /etc/profile.d/coreutils-dircolors.sh.
А вписав новые псевдонимы, не забудьте перезагрузиться.
В общем, ищите и обрящете; кто ищет тот всегда найдет.
Удаление псевдонимов
Для дезактивации псевдонимов применяется команда unalias:$ unalias ИМЯ_ПСЕВДОНИМА
Внимание: команда unalias удаляет не только созданные вами псевдонимы, но и постоянные, прописанные в конфигурационных файлах.
Опция -a позволяет удалить все псевдонимы для данного пользователя и данного шелла:
$ unalias -a
(Кстати, это единственная опция команды).
Другой способ удалить псевдоним заключается в создании нового псевдонима с тем же именем, что и удаляемый, при помощи команды alias.
И, наконец, можно удалить псевдоним непосредственно из конфигурационного файла при помощи текстового редактора.
Резюме
Команда alias - мощное средство настройки шелла "под себя". Применение псевдонимов значительно ускоряет и упрощает работу в командной строке.