コマンド出力をxargsに渡す構文は何ですか?

コマンド出力をxargsに渡す構文は何ですか?

たとえば、私はxdotoolデスクトップからウィンドウリストを取得し、1行に1つずつ数値リストを出力しました。

例コマンドは、xdotool search --name "a_program"タイトルにその文字列を含むすべてのウィンドウを一覧表示します。a_program

サンプル出力は次のとおりです。

50853718
50853807
50859414

数字からウィンドウのタイトルを取得するコマンドの例はですxdotool getwindowname 50854718

xargs各行の出力を変換するコマンドをどのように設定しますかxdotool getwindowname outputnumber

質問は主にについてですが、xargsどんな意見でも歓迎します。xdotool

答え1

> echo "50853718 
50853807 
50859414" | xargs -n 1 echo xdotool getwindowname
xdotool getwindowname 50853718
xdotool getwindowname 50853807
xdotool getwindowname 50859414

それが必要な場合は削除してくださいecho

xdotool search --name "a_program" | xargs -n 1 echo xdotool getwindowname

答え2

xargs完璧にするために:Bashまたは互換性のあるシェルを使用している場合でも、これを行う必要はありません。 (他のどのシェルがこの構文を受け入れるのかはよくわかりませんが、いくつかの一般的なシェルが許可していると思います)xargs。 。

for winid in $(xdotool search --name "a_program"); do
    xdotool windowname $winid;
done

間隔は重要ではないので、すべての内容を1行に入れることができます。ただし、これは返される個々のウィンドウIDにxdotool searchスペースが含まれていないという事実に依存します。

関連情報