Zsh. Псевдонимы
И, наконец, такое мощное средство минимизации пользовательского ввода, как псевдонимы команд (aliases). Разумеется, в zsh
(как и в bash
или tcsh
) псевдоним может быть присвоен любой команде со сколь угодно длинным набором опций. Так, куда как проще раз и навсегда определить команду ls
как псевдоним самой же себя, но с опциями -FG
, нежели каждый раз вспоминать, как отличить в ее выводе каталоги от обычных файлов.
Однако zsh
идет дальше: в нем это дополняется возможностью определения псевдонимов для командных конструкций -- перенаправлений ввода/вывода и командных конвейеров в форме опции -g
(от global aliases -- именно так именуется эта возможность). Так, всем известно, что для обеспечения постраничного вывода любой команды (например, той же ls
) вывод этот нужно передать по конвейеру (pipe) программе-pager'у (less
, more
или most
). Однако не лениво ли -- каждый раз вводить что-нибудь вроде
$ ls | less
да еще и не забывать это делать? Если лениво -- на помощь придут глобальные псевдонимы. Опять же раз и навсегда определяем, что опция -g
со значением L
есть псевдоним для конвейера '| less'
:
$ alias -g L='| less'
после чего имеем возможность, указывая ее после команды, требующей постраничного ввода, именно его и получать:
$ ls L
Очень эффективно применение псевдонимов командных конструкций для подавления нежелательного вывода сообщений об ошибках. Всем пользователям команд find
и grep
известно, что при поиске файлов или текстовых фрагментов за пределами домашнего каталога сплошь и рядом приходится сталкиваться с ситуациями, когда полезный вывод команды тонет в ворохе сообщений типа
find: /var/spool/: Отказано в доступе
Бороться с этим достаточно легко -- надо только перенаправить вывод подобных сообщений в бездонную прорву устройства /dev/null
, например, так:
$ grep -R 'искомая последовательность символов' * 2> /dev/null
Однако и это достаточно лениво, не говоря уж о том, что постоянно забывается. А вот если раз и навсегда определить псевдоним типа
alias -g N='2>/dev/null'
И тогда необходимость напрягать память в каждом случае исчезнет: команда типа
$ grep -R Linux /home/data/work/books N
выведет только полезную информацию. А если добавить ещё и опцию L --
$ grep -R Linux /home/data/work/books N L
она будет представлена постранично.
. .