суббота, 27 апреля 2013 г.

Alias

Моей первой книгой по Линукс был замечательный карманный справочник Скотта Граннемана Linux. Необходимый код и команды. С тех пор я пролистал множество страниц в интернете и книг на бумаге о Linux, но многими привычками обязан этой книге.

Граннеман считает, что одной из важнейших характеристик пользователя Linux является лень. И действительно, лень проявляется всюду. Логотипом ядра считается пухлый беззаботный пингвин Tux, которого Линус Торвальдс хотел бы видеть именно таким, какой он есть:

Вы должны представлять пухлого (*), сидящего и объевшегося пингвина, только что рыгнувшего. Он сидит с блаженной улыбкой — ведь жизнь хороша, когда ты только что съел десяток килограммов сырой рыбы и чувствуешь новую отрыжку на подходе.

(*) Не толстого, но должно быть сразу понятно, что он слишком пухлый, чтобы стоять.

Если вы не можете представить себя кем-то, приходящим в восторг от сырой рыбы, замените её шоколадом или чем-нибудь ещё, но общая идея должна быть понятна.

Все основные команды, используемые в командной строке, имеют необходимый минимум букв в названии — pwd, cd, ls, df, cat. Пользователям было лень писать print_workdir, changedir, listfiles, diskfree, catenate.

Можно ли стать ещё ленивее? Однозначно, можно. И способов существует масса. Одним из них является использование встроенной команды shell (bash, zsh, и, вероятно, других оболочек) alias. Чем она полезна?

Допустим, вы часто используете некую последовательность команд или одну команду с одними и теми же параметрами. К чему каждый раз их печатать? Вы создаёте короткий псевдоним команды (alias — псевдоним) и пользуетесь им. Формат вызова такой:

alias [-p] [name[=value] ...]

Приведу пример.

$ # предполагается, что у вас установлен пакет libnotify-bin и fortune
$ notify-send "$(fortune)"
$ alias nfort='notify-send "$(fortune)"'
$ nfort

Вот и всё — можно использовать более короткое имя вместо длинного имени и параметра.


Псевдонимы хранятся в переменной окружения BASH_ALIASES, представляющего собой ассоциативный массив. Наиболее просто посмотреть список действующих псевдонимов можно, вызвав alias с ключом -p.

К сожалению, команда alias действует только на текущую сессию shell и псевдонимы исчезают после выхода из неё. Каким образом их сохранить? Можно записать псевдонимы в файл .bash_aliases, который обычно находится в домашней директории пользователя. Тогда при каждом запуске командной оболочки она будет считывать этот файл и восстанавливать созданные вами псевдонимы. При обновлении файла можно заставить командную оболочку перечитать его, чтобы активировать псевдонимы в текущей сессии:

$ . ~/.bash_aliases

Обычно такая же строка содержится в файле ~/.bashrc, благодаря чему псевдонимы и загружаются при запуске оболочки.

За время использования Линукс у меня появился определенный набор псевдонимов, без которых я уже чувствую себя некомфортно. Поэтому при использовании нового компьютера первым делом я переношу на него свой файл .bash_aliases. Вот часть его содержимого:

alias l='ls -F'
alias d='df -h'
alias ud='sudo aptitude update && sudo aptitude upgrade'
# подавляет вывод вступительного сообщения и сообщений о правах gdb
alias gdb="gdb -q"

Постоянно пытаюсь просмотреть содержимое директории псевдонимом 'l' и тут же его создаю, если обнаруживаю, что он отсутствует.

Будьте ленивы!

Использованные источники:

Комментариев нет: