我发现自己打字| grep
很多| less
,并且想知道是否有任何方法可以做类似的事情:
alias G='| grep -E' # egrep is deprecated
alias L='| less'
所以我可以做这样的事情:
$ command G grepstring
或者
$ verbose-command L
我目前从 过渡bash
到zsh
,所以如果可能的话请解决这两个 shell 的问题。
答案1
bash
我不知道如何做到这一点bash
,因为手册说:
别名允许在用作单词时用字符串代替单词。第一的一个简单的命令。
zsh
help alias
说:
如果该
-g
标志存在,则定义一个全局别名;全局别名即使不出现在命令位置也会被扩展。
所以在less
例子中:
alias -g L="| less"
例子
zsh-lovers gives the following examples:
alias -g ...='../..'
alias -g ....='../../..'
alias -g .....='../../../..'
alias -g CA="2>&1 | cat -A"
alias -g C='| wc -l'
alias -g D="DISPLAY=:0.0"
alias -g DN=/dev/null
alias -g ED="export DISPLAY=:0.0"
alias -g EG='|& egrep'
alias -g EH='|& head'
alias -g EL='|& less'
alias -g ELS='|& less -S'
alias -g ETL='|& tail -20'
alias -g ET='|& tail'
alias -g F=' | fmt -'
alias -g G='| egrep'
alias -g H='| head'
alias -g HL='|& head -20'
alias -g Sk="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
alias -g LL="2>&1 | less"
alias -g L="| less"
alias -g LS='| less -S'
alias -g MM='| most'
alias -g M='| more'
alias -g NE="2> /dev/null"
alias -g NS='| sort -n'
alias -g NUL="> /dev/null 2>&1"
alias -g PIPE='|'
alias -g R=' > /c/aaa/tee.txt '
alias -g RNS='| sort -nr'
alias -g S='| sort'
alias -g TL='| tail -20'
alias -g T='| tail'
alias -g US='| sort -u'
alias -g VM=/var/log/messages
alias -g X0G='| xargs -0 egrep'
alias -g X0='| xargs -0'
alias -g XG='| xargs egrep'
alias -g X='| xargs'
答案2
Bourne Shell 支持别名,只要在命令行中看到名称,别名就会展开。
alias -a name=value
设置这样的别名。这个概念可以追溯到 1980 年第一个 UNIX 克隆 UNOS 的想法。请小心使用,因为name
如果您不喜欢它被扩展,则需要逃脱。
看:http://schilytools.sourceforge.net/man/man1/bosh.1.html
与 1980 年 UNOS 界面类似的界面目前位于第 6 页,别名部分位于第 7 页,别名命令记录在第 36 页。
Bourne Shell 还实现了 UNOS 中持久别名的概念。
由于 Bourne Shell 中的别名比其他 shell 中的别名更强大,因此建议花一些时间使用该功能来了解它的功能。