Bash

不是第一個單詞時的別名:G='|grep' 然後是 command G grep-string

  • June 30, 2018

我發現自己打字很多,| grep並且| less想知道是否有任何方法可以執行以下操作:

alias G='| grep -E'  # egrep is deprecated
alias L='| less'

所以我可以做類似的事情:

$ command G grepstring

或者

$ verbose-command L

我目前正在從 過渡bashzsh,所以如果可能的話,請同時處理這兩個 shell。

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'

引用自:https://unix.stackexchange.com/questions/452607