別のエイリアス+パラメータでエイリアスを呼び出す

別のエイリアス+パラメータでエイリアスを呼び出す

引数を使用して他のコマンドを提供できると同時にgrepを要約しようとしていますが、それを機能させる方法がわかりません。私がしている作業は次のとおりです。

alias pac='sudo pacman'

grp(){
     $1 | grep $2 | less
}

次のいずれかを実行してみてください。

grp 'pac -Q' nvidia
grp "pac -Q" nvidia
grp (pac -Q) nvidia

しかし、私はすべてに失敗しました。どんな提案がありますか?

重要な要約:基本的にヘッダーを使用するか、command -XYZ$ NUM値または他の利用可能な値と同じように受け入れるようにしてください。

ベストアンサー1

回避策があるかもしれません。 Bashでは、エイリアス拡張が空白で終わる場合、次の単語も拡張ターゲットと見なされます。だから私が持っている場合:

alias foo='echo ' bar=hello

これで以下が実行されfoo barますecho hello

$ foo bar
hello

これにより、grp最初の引数がエイリアス拡張を考慮するように関数のエイリアスを指定し、それに応じて変更してgrp使用できます。最後パターンとしてのパラメータ:

grp () {
  local pat="${@: -1}"
  "${@:1:$#-1}" | grep "$pat" | less
}
alias grp='grp '

それから:

$ grp pac -Q nvidia
lib32-nvidia-utils 440.82-1
nvidia-dkms 440.82-2
nvidia-settings 440.82-1
nvidia-utils 440.82-2
opencl-nvidia 440.82-2

もちろん、これはパイプを使用するなどの複雑なエイリアスでは機能しません。

$ alias foo='bar | cat'
$ grp foo nvidia
cat: nvidia: No such file or directory

おすすめ記事