質問

の使い方を理解したい xargs manランピオンのコード:

screen -t man /bin/sh -c 'xargs man || read'

ランピオンのおかげで:猫は必要ありません!

なぜ必要なのか xargs コマンドで?

わかりました xargs -部分は以下の通り

  1. 猫は xargs に何もしない
  2. xargs は man コマンドのリストを作成します

xargs がコマンドのリストを作成するというアイデアがありました。例えば、

find . -type f -print0 | xargs -0 grep masi 

コマンドのリストと同じです。

find fileA AND grep masi in it 
find fileB AND grep masi in it 
           and so on for fileC, fileD, ...
役に立ちましたか?

解決

いいえ、私は何もcatません。私は、コマンドを実行した後、私が得るものは何でも入力私は猫。 catがここに実際に余分なので、のは、それを無視せます。

xargs manは、ユーザ入力に待機します。これは必要です。スクリプトで、あなたがそこからつかんだので、私は、ウィンドウを作成した後まで、男性のための引数に貼り付けることはできません。だから、ウィンドウ内で実行するコマンドは、私はそれに何かを与えるためにそれが男を実行しようとする前に、待機する必要があります。

私達はちょうどscreen /bin/sh -d 'man || read'を実行した場合は、

、それは常に「あなたは何のマニュアルページをしたいですか?」文句を言うでしょう我々はそれを話したことがないからです。

他のヒント

xargsが標準入力から引数を収集し、それらの引数で指定されたコマンドを実行します。

猫を入力するために何かを待っている、その後、xargsのは、その入力で男を実行している。そう

xargsのあなたが処理するために、たくさんのファイルを持っている場合、私は多くの場合、検索からの出力とそれを使う便利です。 xargsがコマンドライン上にできるだけ多くの引数それができるように詰め込むます。
これは、

のようなものを行うための素晴らしいことです
find . -name '*.o' -print | xargs rm

catコマンドは何も上では動作しません。入力が終了したことを告げられたアップまで、標準入力で動作します。ホタルブクロのメモとして、catコマンドはここでは必要ありませんが、それはその暗黙の入力(標準入力)で、何もない上で動作してます。

xargsコマンドは、(のみ)引数として指定catコマンドの引数に情報をmanからの出力を読み込み、グループ。それは(コマンドラインで設定可能)限界に到達すると、それはmanコマンドを実行します。

find ... -print0 | xargs -0 ...イディオムは、空白、タブ、改行など厄介な文字を含むファイル名を扱います。 findコマンド印刷ASCII NUL('\0')、続いて各ファイル名。その他は「/」は(パス名では、もちろん、ではなく、単純なファイル名で表示されます) - これは、単純なファイル名で表示することはできません2つの文字の一つです。それはあなたが提供するシーケンスに直接等価ではありません。サイズ制限までの単一引数リストにファイル名のxargsグループのコレクション、。名前は(彼らは通常は)十分に短い場合は、ファイル名があるよりも、grepの少ない処刑があるでしょう。

メモは、あまりにも、grepは、それが検索する複数のファイルを持っている場合は材料が発見されたファイル名印刷します - またはそれはオプションをサポートしている場合、それは常にファイル名を印刷し、オプションが使用されるように: 「-Hは、」これを行いgrepにGNUの拡張です。ファイル名が常に表示されていることを確実にするポータブルな方法は、最初のファイル(そう「/dev/null」)としてxargs grep something /dev/nullをリストすることです。それは/dev/nullを検索するために時間はかかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top