アンドロイド

LinuxのXargsコマンド

’, Â, � etc... How to fix strange encoding characters in WP or other SQL database

’, Â, � etc... How to fix strange encoding characters in WP or other SQL database

目次:

Anonim

xargs ユーティリティを使用すると、標準入力からコマンドを作成して実行できます。 通常、パイピングを通じて他のコマンドと組み合わせて使用​​されます。

xargs を使用すると、 mkdir rm などのコマンドラインユーティリティへの引数として標準入力を提供できます。

このチュートリアルでは、 xargs コマンドの使用の基本について説明します。

Linux xargs コマンドの使用方法

xargs 、空白または改行で区切られた標準入力から引数を読み取り、入力をコマンドの引数として使用して、指定されたコマンドを実行します。 コマンドが提供されない場合、デフォルトは /bin/echo です。

xargs コマンドの構文は次のとおりです。

xargs]

xargs を使用する最も基本的な例は、 xargs へのパイプを使用して空白で区切られたいくつかの文字列を渡し、それらの文字列を引数として使用するコマンドを実行することです。

echo "file1 file2 file3" | xargs touch

上記の例では、標準入力を xargs パイピングし、各引数に対して touch コマンドを実行して、3つのファイルを作成します。 これは、実行する場合と同じです。

touch file1 file2 file3

コマンドを表示してユーザーにプロンプ​​トを表示する方法

コマンドを実行する前に端末で印刷するには、 -t (-- --verbose )オプションを使用します。

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

y または Y と入力して、コマンドを確認して実行します。

touch file1 file2 file3 ?…y

このオプションは、破壊的なコマンドを実行するときに役立ちます。

引数の数を制限する方法

デフォルトでは、コマンドに渡される引数の数はシステムの制限によって決まります。

-n (-- --max-args )オプションは、指定されたコマンドに渡される引数の数を指定します。 xargs は、すべての引数がなくなるまで、指定されたコマンドを必要な回数実行します。

次の例では、標準入力から読み取られる引数の数は1に制限されています。

echo "file1 file2 file3" | xargs -n 1 -t touch

以下の詳細出力からわかるように、touchコマンドは引数ごとに個別に実行されます。

touch file1 touch file2 touch file3

複数のコマンドを実行する方法

xargs で複数のコマンドを実行するには、 -I オプションを使用します。 -I オプションの後に replace-str 定義することで機能し、 replace-str すべての出現はxargsに渡された引数に置き換えられ replace-str

次の xargs 例は2つのコマンドを実行します。最初に touch を使用してファイルを作成し、次に ls コマンドでファイルをリストします。

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

replace-str 一般的な選択は % です。 ただし、 ARGS などの別のプレースホルダーを使用できます。

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

区切り文字を指定する方法

-d (-- --delimiter )オプションを使用して、カスタム区切り文字を設定します。これは、1文字または \ 始まるエスケープシーケンスのいずれかです。

使用している次の例 ; 区切り文字として:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

ファイルからアイテムを読み取る方法

xargsコマンドは、標準入力の代わりにファイルから項目を読み取ることもできます。 これを行うには、 -a -a --arg-file )オプションに続けてファイル名を使用します。

次の例では、 xargs コマンドは ips.txt ファイルを読み取り、各IPアドレスにpingを実行します。

ips.txt

8.8.8.8 1.1.1.1

また、 xargs に一度に1行を読み取るように指示する -L 1 オプションも使用しています。 このオプションを省略すると、 xargs はすべてのIPを単一の ping コマンドに渡し ping

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

xargs xargs を使用する

xargs は、ほとんどの場合、 find コマンドと組み合わせて使用​​され find xargs を使用して特定のファイルを検索し、 xargs を使用してそれらのファイルに対して操作を実行できます。

改行またはその他の特殊文字を含むファイル名の問題を回避するには、find -print0 オプションを常に使用します。これにより、 find は完全なファイル名の後にヌル文字を出力します。 この出力は、 -0 、(-- --null )オプションを使用して xargs によって正しく解釈できます。

次の例では、 find /var/www/.cache ディレクトリ内のすべてのファイルの /var/www/.cache xargs はファイルパスを rm コマンドに渡します。

find /var/www/.cache -type f -print0 | xargs -0 rm -f

xargsを使用して空白文字を削除する

xargs は、指定された文字列の両側から空白を削除するツールとしても使用できます。 文字列を xargs コマンドにパイプするだけで、トリミングが実行されます。

echo " Long line " | xargs

Long line

これは、シェルスクリプト内の文字列を比較するときに役立ちます。

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

結論

xargs は、コマンドをビルドおよび実行できるLinuxのコマンドラインユーティリティです。

xargs オプションの詳細については、xargsのマニュアルページを参照してください。

xargsターミナル