誰かがこのxargsコマンド構造を私に説明できますか?

誰かがこのxargsコマンド構造を私に説明できますか?

このコマンドは、inotifyワーカー(そう言いましたか?)などのパイプラインの一部です。私は、inotifyの使用に対する答えを見つけるために(非常に便利な!)コマンド全体を分析するように要求するよりも、投稿ごとに1つの質問戦略に適していると思います。

xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}'

文書によると、構文は次のとおりです。

xargs [options] [command [initial-arguments]]

-I置換-str初期引数の置換-strエントリを標準入力から読み取った名前に置き換えます。また、引用符のないスペースは項目を終了せず、代わりに区切り文字は改行文字です。 -x と -L を意味します。

矯正器にダニがあるのはなぜですか?

そして角括弧はコマンドの出力で埋められますかps

  1. --no-headers- 非常に明白です
  2. -o- 注文オプション...
  3. %p- プロセスID(pid)
  4. %U- ユーザーID
  5. %c- 実行可能ファイルの簡単な名前

-p pidlist PIDで選択します。これにより、プロセスID番号がpidlistに表示されるプロセスが選択されます。 p と --pid と同じです。

2番目のpidリストは'{}'何をしており、どのような値がありますか?$fooselectこの場合、どういう意味ですか?

参考としてのみ

前のコードは次のとおりです。

for foo in /proc/*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |

寄稿者: envygeekshttps://github.com/atom/atom/issues/2082

ありがとう

ベストアンサー1

  1. 矯正器にダニがあるのはなぜですか?

    シェルが破損するのを防ぐために、一部のシェルでは特殊な文字順に解釈することができ、代わりに他のものを使用することを決定することもできます'{}'

  2. 2番目のpidリストは'{}'何をしており、どのような値がありますか?

    2番目は'{}'実際にxargsが実行するコマンドの内側にあります。ここで読んだ内容に{}置き換えられます。xargsstdin

  3. $foo?

    いいえ。開いているすべてのファイル記述子で、コマンドによって生成されたループ(ループ)を理解し、所属プロセスのPIDを含むフルパスfor(部分)を取得します。readlink次に、このリストを取得し、inotify(部分)を参照する項目をフィルタリングし、パスgrep()からPIDを抽出します。cut各行はプレースホルダxargsに置き換えられます。

  4. この文脈での選択とはどういう意味ですか? *

    https://en.wiktionary.org/wiki/select#Verb

おすすめ記事