何だろうと思っていたgrep -v "grep"
はどういう意味ですか?
grep -v "grep"
は1行ずつ入力を受け取り、grep
が出現しない行のみを出力します。 -v
がない場合、grep
doesが出現する行のみが出力されます。詳細は man grep
を参照してください。
grep
ユーティリティ自体に関する限り、引数として渡されるパターンgrep
がその名前と同じであることは重要ではありません。しかし、実際にgrep -v grep
が現れるほとんどの場合、これは偶然ではありません。
grep -v grep
(またはgrep -v 'grep'
またはgrep -v "grep"
)はしばしば パイプ の右側に表示され、その左側が ps
コマンド。 それはあなたがそれを見たところです。たとえば、名前、パス、またはコマンドライン引数がXfceに関連していることを示唆している実行中のプログラムを探している可能性があります。
ek@Io:~$ ps x | grep xfce
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+ 0:00 grep --color=auto xfce
私のgrep
コマンドは出力に表示されましたが、私が探しているものではありません。実行中のものだけを調べているときに、すでに実行中だったプロセスに関する情報を探しています。実行中のものを調べるための私の努力の理由です。
この煩わしさを解消する一般的な方法の1つは、grep -v grep
にanotherパイプを追加することです。
ek@Io:~$ ps x | grep xfce | grep -v grep
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
grep
なしで-F
を使用すると、パターンが 固定文字列 ではなく 正規表現 として扱われます。したがって、もう1つのアプローチは、xfce
と完全に一致する正規表現を記述することですが、書き方は異なります。例えば:
ek@Io:~$ ps x | grep '[x]fce'
2955 ? Ssl 0:10 xfce4-power-manager
2958 ? S 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
これは、[x]
が文字x
と完全に一致する 文字クラス であるため機能します。
これらの一般的なメソッドの欠点の1つは、自分が実行したばかりのgrep
コマンドではない場合でも、grep
を含む行を除外することです。それらはgrep
コマンドでなくてもよく、名前、パス、またはコマンドライン引数containgrep
のコマンドのみです。したがって、 Sergiy Kolodyazhnyyが指摘したように のように、多くの場合、これらの方法(およびps
の出力のパイプ処理を含む他の方法)のどちらも実際には理想的ではなく、 Nic Hartley言及 、 その他ウェイズ よく使用される pgrep
。例えば:
ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
-a
showsコマンドライン全体。省略して、プロセスID番号のみを表示します。-f
searchesコマンドライン全体。名前のみを検索する場合は省略します。grep --help
は、-v
フラグの機能を示しています。
-v, --invert-match select non-matching lines
-v
フラグを使用して、一致を反転して印刷できます。つまり、指定されたWordを含まない行のみに一致します。たとえば、Wordバーを含まないすべての行を印刷します。
$ grep -v bar /path/to/file
( 続きを読む... )