Алексей Федорчук
Псевдонимы для команд с их опциями (alias) — ещё один из простых способов минимизировать ввод командных директив, применяемый во всех оболочках. Обычно самые востребованные из них, такие, как
alias mv='mv -i'
предостващающий случайное перезаписывание одноимённых файлов при перемещении или переименовании, или
alias cp='cp -iR'
обеспечивающий, кроме того, рекурсивное копирование содержимого каталогов, заносятся в пользовательский конфиг регистрационной оболочки, в нашем случае ~/.zshrc
. И они будут подробно рассмотрены при детальном его описании. Однако в Zsh имеется два вида псевдонимов (насколько я знаю, не имеющих аналогов в Bash’е и прочих shell’ах), которые ещё больше облегчают жизнь применителя этой командной оболочки.
Первый из них — так называемые глобальные псевдонимы (global alias). Всех нас раздражает ситуация, когда в ответ на попытку поиска файла утилитой find
или фрагмента текста grep
выводится множество сообщений о том, что доступ к некоему каталогу запрещён, которые выглядят примерно так:
find: «/var/cache/ldconfig»: Отказано в доступе
И среди которых полезная информация просто теряется.
Разумеется, каждый, кто систематически работает в CLI, знает, что для подавления этого «шума» достаточно присобачить к конструкции поиска посредством той или другой утилиты маленький аппендикс в виде 2> /dev/null
, перенаправляющий все сообщения об ошибках в «нулевой» файл.
Однако в Zsh борьба с «шумом» осуществляется ещё проще: достаточно задать такой глобальный псевдоним:
$ alias -g N='2>/dev/null'
где -g
указывает, что следующий символ (или символы) представляют собой не простой псевдоним, а глобальный, N
— его имя, а следующая после равенства последовательность в строгих кавычках — подменяемое им выражение. И теперь можно задавать команду поиска файлов вида:
$ find path2 -name [filename] N
и больше не заботиться об отделении «зёрен от плевел».
Глобальные псевдонимы очень полезны в командных конструкциях перенаправления по конвейеру, например, для поэкранного представления длинного вывода какой-либо команды:
$ alias -g L='|less'
А для фильтрации вывода по вхождению последовательности символов можно задать такой глобальный псевдоним:
$ alias -g G='|grep'
После чего использовать его в конструкциях, например, поиска пакетов:
$ apt search apt G '^apt-'
В сочинительском труде весьма полезен такой глобальный псевдоним:
$ alias -g W='|wc -m'
Ибо нашему брату часто требуется прибегать к такой конструкции:
$ cat filename W
Она в данном случае выведет число символов в текстовом файле — что для нас важнее числа байт (а при использовании 16-битной кодировки для преимущественно кириллического текста эти значения не совпадают).
Второй вид уникальных псевдонимов в Zsh — псевдонимы «суффиксные» (более удачного определения их я не придумал). Подобно тому, как добавление к команде alias
опции -g
превращает обычный псевдоним в глобальный, так и опция -s
делает его «суффиксным». То есть привязывает суффикс имени файла (в просторечии часто называемый «расширением») к некоей программе, которая может сотворить над ним нужное действо. Например, если задать псевдоним такого вида
$ alias -s txt='nano'
а затем набрать в командной строке имя указанного текстового файла (при необходимости с указанием пути к нему)
$ path2/packagename.txt
то этот самый файл будет открыт в текстовом редакторе Nano.
Это, конечно, банальщина. Но есть и более интересное применение «суффиксных» псевдонимов. Например, с их помощью можно просматривать содержимое пакетов (применительно к нашему случаю — *.deb
). Для чего достаточно набрать в командной строке такое:
$ path2/arc-theme_1465131682.3095952_all.deb
то мы сразу увидим полный список входящих в него файлов.
Разумеется, определения всех постоянно используемых псевдонимов, и глобальных, и «суффиксных», не обязательно задавать каждый раз в командной строке, как в приведённых выше примерах — их резонно занести в файл ~/.zshrc
. Что, кстати, и сделано в Cintu, что называется, «искаропки». То есть применителю этой системы, если он не откажется от использования Zsh в качестве login shell, не придётся заморачивать себе голову вводом ни одного из приведённых выше псевдонимов (как, впрочем, и ряда других, о чём будет сказано своевременно).