これは… ps `cat`”コマンドはどうですか?


10

私のインターネット調査で、ウィンドウのプロセス名を見つけるための解決策として次のコマンドが見つかりました。

xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`

私は最初の後でここで何が起こるか理解していません|

がプロセスIDとしてxprop _NET_WM_PID出力さ1000れると仮定しましょう。次は何が起こる?なぜ我々は持っていないcatps?私は少し混乱しています。

回答:


15

xprop ... | sed ...最初に実行され、次にcatその出力を読み取ります。バックティックを使用しているためps `cat`、コマンドがになるようにcatの出力が置き換えられps 1000ます。

同じ結果になる別のコマンドは次のとおりです。

ps $(xprop _NET_WM_PID | cut -d= -f2)

これは次のように機能します。

  1. xprop _NET_WM_PIDウィンドウのプロセスIDを取得するために実行します。ウィンドウをクリックすると、次のように出力されます。

    _NET_WM_PID(CARDINAL) = 12345
    
  2. で分割し、=2番目のフィールドを取ります。標準入力から文字列をcut -d= -f2受け取り、標準出力に_NET_WM_PID(CARDINAL) = 12345書き込み12345ます。
  3. 最後に、の出力ps$(...)置き換え...てコマンドを実行しますps 12345。実行されるコマンドはです。(補足:いくつかの違いはあります、の`...`代わりに使用することもできます)$(...)

4
興味深い「複雑さ」、これ| command 'cat'(コメントのバックティックにバックティックを埋め込むことはできませんか?)...通常の方法は次のとおりです| xargs command(xargsへの追加パラメーターを使用して、たとえば1つまたはn個の引数に制限するなど)
Olivier Dulac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.