バッシュ機能 Grep Mod

バッシュ機能 Grep Mod

TL:DRさまざまな数のオプションの入力を許可しながらbash関数にgrepを追加するには?

大きな出力を繰り返し収集すると、端末がデータのために詰まることがわかりました。場合によっては、grepを実行してすべてのデータをキャプチャしながら、そのアイテムの一番上にすばやく移動したい場合があります。この目的のために、私は "clear;clear; grep [options] [string] [file]; top"を使用することに慣れました。怠惰なので、これをClearとgrepの両方を実行する「cgrep」という関数に置き換えたいと思います。私が試したことは次のとおりです。

cgrep () {
   clear
   clear
   grep "$1" "$2" "$3"
}

常に1つのオプションのパラメータを使用している場合は、この方法は機能します。ほとんどの場合、これは問題ではありませんが、問題を引き起こすことなく(たとえば、[文字列]を[ファイル]として読み取る)、0-Nオプションの引数を提供する方法がわかります。

私は読んだこの投稿、同様の実装を試しました。しかし、これは私の要件には適していません。 cgrep と [string] の間にオプションのパラメータを追加して、既存の grep と同様にすることができれば良いでしょう。

ベストアンサー1

bashとshでは、"$@"すべての位置引数は次のように拡張されます。

cgrep () {
   clear
   clear
   grep "$@"
}

各パラメータの単語分割、ワイルドカード、NULL削除などを防ぐには、二重引用符で囲む必要があり$@ます。

3.4.2 特殊パラメータ

おすすめ記事