• 作成:

alias pa='ps aux|ag'をag自身が見えないようにfunctionに変更して同期させましたがスマートな書き方ではない気がします

私は数年前から以下のzsh aliasを使用していました.

alias pa='ps aux|ag'

これを定義していると現在mozcが実行されているか調べる時にpa mozcと入力するだけで良いので便利です.

しかしこのaliasには1つの問題がありました.

agps auxと同時に起動されてしまい, 引数に検索キーワードが含まれるので検索にag自身が引っかかってしまいます.

これまでまあ別に良いやと思って数年過ごしてきましたが, 突如修正したくなったので修正しました.

aliasではなくfunctionとして書き直しました.

pa() {
    readonly local ps_result=$(ps aux)
    echo $ps_result|ag $@
}

これでps auxの実行を文字列変数に同期入力するため, agのプロセスは含まれなくなります.

しかしこれで良いのかどうにもわかりません. シェルスクリプトの書き方は色々ありすぎて意味不明です. これもfunctionではなく手軽に同期するパイプ文法があるのではないかと思って調べてみましたが見つからない. もっとスマートな書き方を知ってる人はぜひ教えて欲しいです.