Глобальные алиасы в zsh


ramok аватар

ramok - Posted on 26 Декабрь 2006

В zsh в дополнение к нормальным и
суфиксным алиасам, существуют еще и глобальные алиасы. Они отличаются от обычных тем, что разварачивание алиаса
происходит в любом месте командной строки, а не только в начале строки.
Глобальные алиасы удобно использовать для всевозможных фильтров:

alias -g  CA='|& cat -A'
alias -g  CL='| wc -l'
alias -g   C='***/*.([chly]|[ch]pp|[ch]xx|C)'
alias -g   D='| xxd -g 1'
alias -g   G='| grep'
alias -g  GI='| grep -i'
alias -g   H='| head'
alias -g IKU='| iconv -cf koi8r  -t utf8'
alias -g IKW='| iconv -cf koi8r  -t cp1251'
alias -g IUK='| iconv -cf utf8   -t koi8r'
alias -g IUW='| iconv -cf utf8   -t cp1251'
alias -g IWK='| iconv -cf cp1251 -t koi8r'
alias -g IWU='| iconv -cf cp1251 -t utf8'
alias -g   L='| less'
alias -g  LE='|& less'
alias -g  PD='| patch -p1 --dry-run'
alias -g   P='| patch -p1'
alias -g   S='| sort'
alias -g  SU='| sort -u'
alias -g   T='| tail'
alias -g   V='| vim -'
alias -g  VM='| vim -c "set ft=mail" -'
alias -g  LM=/var/log/messages
alias -g  LS=/var/log/syslog
alias -g X0G='| xargs -0 egrep'
alias -g  X0='| xargs -0'
alias -g  XG='| xargs egrep'
alias -g   X='| xargs'
alias -g  DN='/dev/null'
alias -g  NO='&> /dev/null' # No Output
alias -g  NE='2> /dev/null' # No Errors
alias -g   E='2>&1'
 
autoload colors # подключим цвета
colors
alias -g  HE='2>>( sed -e "s/.*/$fg_bold[red]&$reset_color/" 1>&2 )' # Highlight Errors
 
# usefull when copy/past examples ex: "$ echo $LANG"
alias \$=''
alias %=''
 
alias tree='tree -ifF'

Пример использования:
посмотреть что у за процессор у машины

$ dmesg G "^CPU:"

Посмотреть сколько rxvt запущено

$ ps -ef G rxvt WC

Конечно могут возникнуть и проблемы. Например здесь дан пример как посмотреть
какие папки занимают больше гигабайта.

$ sudo du -hs * | grep G

В данном случае G развернется в "| grep", чего нам очень не хотелось бы. В этом случае поможет
быстрая отмена алиасов .

$ sudo du -hs * | grep \G

или

$ sudo du -hs * G \G
0
Ваша оценка: Ничего

...данном случае, кроме того, что не нужно вводить символ | ?

alias G grep
dmesg |G "^CPU:"

>>конечно могут возникнуть и проблемы.
Они могут возникнуть даже несмотря на глобальность алиаса. :-) Однако в случае отсутствия "палки", можно обойтись и "привычным" синтаксисом:

sudo du -hs * | G M
sudo du -hs * | G \G

Скупой платит дважды, в общем... :-)

1. я так понимаю имелось ввиду alias G=grep?
2. пример с
sudo du -hs * G \G
добавил

--
Signature invent in progress 22% #.........