Bash

如何使用 grep 在 bash 中搜尋以某個字元開頭的行

  • November 24, 2012

我想要一個別名 (‘ggg’),它將查看我現有的一組別名並告訴我所有以g*開頭的別名。我有很多 g 別名 :)

我試過這個:alias ggg='alias | grep ^g'但沒有給我任何輸出(或錯誤)。我最不確定的是“行首”字元。

alias 的輸出是以 . 開頭的行alias。所以你的別名應該是:

alias ggg='alias | grep "^alias g"'

在zsh 中,

alias ggg='alias -m "g*"'

或者使用一個函式,這樣ggg它就不會列印出來:

ggg() alias -m 'g*'

您也可以 grep “別名”的輸出,但如果有一些多行別名,它可能無法正常工作。

使用 bash,你可以使用這個技巧:

(
  alias() { [[ $1 = g* ]] && builtin alias "${1%%=*}"; }
  eval "$(builtin alias)"
)

這個想法是 bashalias輸出一些準備好被解釋以重現相同別名的文本,例如:

$ alias
alias a='foo'
alias goo='gar
baz
alias gro=grar'

所以我們確實評估了它,但是在重新定義為一個函式之後,它只在傳遞一個以“g”開頭的字元串時才alias呼叫實數。alias

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