GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで中括弧ありとなしの差分bentween xargsとは何ですか

xargs rm rm を呼び出します スペースで区切られたパラメーターとしてすべての引数を指定します。

xargs -i{} rm {} rm {} を呼び出します 引数と {} のそれぞれについて 現在の引数に置き換えられます。

引数が 2 つある場合 a.txt および b.txtxargs rm これを呼び出します

rm a.txt b.txt

しかし xargs -i{} rm {}

を呼び出します
rm a.txt
rm b.txt

これは -i のためです オプションは -L 1 を意味します コマンド rm を意味するオプション 1 のみを取ります 毎回ライン。ここでは、各行に引数が 1 つだけ含まれています。

詳細については、この Ideone リンクを確認してください。


中括弧を使用すると、1 つの rm が生成されます ファイルごとに処理します。中括弧なし、xargsrm にできるだけ多くのファイル名を渡します コマンド。

比較

ls | xargs echo

そして

ls | xargs -i echo '{}'

-i オプション (--replace と同等) は、xargs が受信したばかりの入力を格納する一種のプレースホルダーを作成します。 2 番目のコマンドでは、プレースホルダーは「{}」であり、find -exec オプションのように機能します。定義すると、xargs はこのプレースホルダーを入力行全体に置き換えます。 「{}」の名前が気に入らない場合は、独自の名前を定義できます:

<ブロック引用>

ls | xargs -iPLACEHOLDER echo PLACEHOLDER

あなたの場合、両方のコマンドが同じ結果を生成しています。 2 番目の形式では、-i オプションを使用してデフォルトの動作を明示しているだけです。


Linux
  1. Linux上のFlatpak:それは何であり、それを使ってアプリをインストールする方法

  2. Podmanとは何ですか?LinuxにPodmanをインストールする方法

  3. LinuxでOBSとWaylandを使用した画面記録

  1. rdiff-backupの新機能

  2. LinuxでのChownコマンドとは何ですか?その使用方法

  3. Linuxで検索および検索コマンドを使用してファイルを検索する

  1. FirewallDとは何ですか?Linuxに実装する方法

  2. NFSとは何ですか?Linuxにインストールする方法

  3. linux/if.h と net/if.h の何が問題になっていますか?