Linux xargsコマンドの使用

Linux xargsコマンドの使用

1. 機能:

xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切られた引数に変換し、他のコマンドに渡すことができます。スペースは区切り文字として使用されるため、スペースが含まれているファイルまたは他の意味を持つ名詞を xargs が誤って判断する可能性があります。簡単に言えば、xargs は他のコマンドにパラメータを渡すフィルターであり、単一行コマンドを構築するための重要なコンポーネントの 1 つです。

xargs が使用される理由は、多くのコマンドがパラメータを渡すためのパイプ | の使用をサポートしていないためです。次に例を示します。

find /sbin -perm +700 |ls -l //このコマンドは、標準入力をlsのパラメータとして使用できないため、間違っています。 find /sbin -perm +700 |xargs ls -l //これは正しいです。

2. コマンド形式

xargs [オプション] [コマンド]

3. オプションの説明:

-0: 入力 stdin にバッククォート `、バックスラッシュ \、スペースなどの特殊文字が含まれている場合、xargs はそれを通常の文字に復元できます。 xargs のデフォルト オプション。
-e <フラグ>、-E <フラグ>、--eof=<eof-str>: eof はファイル文字列の終わりを意味します。フラグは、文字列、またはスペースで区切られた複数の文字列にすることができます。xargs がこのフラグを分析すると、動作を停止します。例2を参照してください。
-p: 引数が実行されるたびにユーザーに確認します。
-n <num>: コマンドの実行時に一度に使用される引数の数を num で指定します。デフォルトではすべてのパラメータが使用されます。
-t: 最初にコマンドを印刷してから実行します。
-a <ファイル>: ファイルから sdtin として読み取ります。
-i[replace-str]: xargs に、標準入力から読み取ったパラメータの代わりに {} を使用するように指示します。置換文字列 replace-str を指定できます。指定しない場合は、デフォルトは {} です。 POSIX 標準に準拠する -I を使用することをお勧めします。
-I [replace-str]: xargs が出力した各パラメータを後続のコマンドに個別に割り当てます。パラメータは、指定された置換文字列 replace-str に置き換える必要があります。つまり、replace-str はデフォルトにできず、明示的に指定する必要があります。{} $ @ などの記号を使用できます。主な機能は、xargs コマンドの後に複数のパラメータがある場合に、パラメータの位置を調整することです。たとえば、 find . -name "*.txt"|xargs -I {} cp {} /tmp/{}.bak.
-r: または --no-run-if-empty は、xargs の入力が空の場合、xargs は停止し、後続のコマンドを実行する必要はありません。-r は xargs のデフォルト オプションです。
-s <num>: コマンドラインの最大文字数。コマンド、スペース、改行を含む、xargs 後のコマンドラインの最大文字数を指します。各パラメータは、xargs に続くコマンドに個別に渡されます。例4を参照してください。
-L <line_num>: コマンドの実行ごとに、標準入力の最大行数をパラメータとして設定します。例5を参照してください。
-d <delim>, --delimiter=<delim>: xargs は、デフォルトでは標準入力を処理するときに改行文字とスペースを区切り文字として使用します。出力引数の区切り文字はスペースです。ここでは、xargs が標準入力を処理するときの区切り文字を変更します。
-x: は eXit を意味し、主に -s と一緒に使用されます。コマンド ラインの文字数が -s で指定された値より大きい場合、xargs は終了します。
-P: プロセスの最大数を変更します。デフォルトは 1 です。0 の場合は、可能な限り多くすることを意味します。このオプションはほとんど使用されておらず、その使用法は現時点では不明です。

4. 使用例

(1)シェルの特殊文字を通常の文字に戻す。

[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo
エコー `0123`4 56789 
`0123`4 56789

次の操作を直接実行すると、コマンド 01234 が見つからないというエラー メッセージが表示されます。これは、バッククォートによって 01234 がシェル内のコマンドとして実行されますが、01234 はコマンドではないためです。 -t は、最初にコマンドを印刷してから実行することを意味します。

[b3335@MIC ~]$ エコー `01234` 56789
-bash: 01234: コマンドが見つかりません
56789

(2)xargsがパラメータを読み込む際の終了マークをカンマで終わるように設定します。ここで注意すべき点は、終了マークは別のフィールド、つまりスペースまたは改行で区切られたフィールドである必要があるということです。

[b3335@MIC ~]$ echo 01234 , 56789|xargs -E ","
01234

(3)rmやmvなどのコマンドを使用して複数のファイルを同時に操作すると、「引数リストが長すぎます」というエラーメッセージが表示される場合があります。この場合、xargsを使用すると問題を解決できます。 xargs は標準入力の文字列を分離し、後続のコマンドにパラメータとして個別に渡します。たとえば、現在のディレクトリ内のすべてのファイルにサフィックスを追加します。

ls | xargs -t -i mv {} {}.bak

#条件を満たすファイルを選択 ls|grep -E "201701|201702|201703|201704|201705|201706|201707|201708|201709|201710" |xargs -i mv {} {}.bak

(4)コマンドラインの最大文字数を設定します。デフォルトでは、パラメータは実行のためにコマンドに 1 つずつ渡されます。

[b3335@MIC テスト]$ echo "01234 56789"|xargs -t -s 11
エコー 01234 
01234
エコー 56789 
56789

(5)コマンドパラメータとして毎回使用する標準入力の行数を設定します。デフォルトでは、標準入力のすべての行を1行にマージし、一度にコマンドに渡して実行します。

[b3335@MIC テスト]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo 
エコー 01234 56789 
01234 56789
エコー 01234 
01234

(6)ファイルの内容をスペースで区切って同じ行に出力します。

//ファイル cat test.txt の内容を一覧表示します
ABCD
フギクルムノ

// 複数行の入力と 1 行の出力: 
cat テスト.txt | xargs
いいえ

(7)ps、grep、awk、killと組み合わせて、指定されたプロセスを強制終了する

ps -ef|grep spp|awk '{printf "%s ",$2}'|xargs kill -9

コマンドの説明:
ps -ef|grep sppは spp を含むプロセスを見つけるために使用され、 awk '{printf "%s ",$2,FNR}ターゲット プロセス ID を出力し、 xargs kill -9ターゲット プロセス ID をパラメーターとして kill -9 に渡してプロセスを強制終了します。

上記は Linux xargs コマンドの使用に関する詳細な内容です。Linux xargs コマンドの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • Linux の基礎: xargs コマンドの紹介
  • Linux での xargs コマンドの詳細な説明と xargs とパイプラインの違い
  • Linux xargsコマンドの詳細な紹介
  • Linux シェル スクリプト学習における xargs コマンドの使用法の詳細な説明
  • Linux で xargs コマンドを使用する詳細なチュートリアル

<<:  超詳細なMySQL使用仕様の共有

>>:  JavaScriptの動作メカニズムの詳細な説明とイベントループについての簡単な説明

推薦する

CSS を使用してデータ ホットスポット効果を実現する方法

効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...

マークアップ言語 - CSS レイアウト

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

CSSは複数の要素をボックスの両端に揃える効果を実現します

要素の両端を揃える配置レイアウトは、実際の開発のいたるところで見られます。これは、フレックスレイアウ...

Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...

CSS を使用して画像の下の空白を数ピクセル消去する方法の詳細な説明

最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...

MySQLデータのグループ化の詳細な説明

グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...

CSS に基づいて MaterialUI ボタン​​クリックアニメーションを実装し、それを React コンポーネントにカプセル化します。

序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

ラムダ式の原則と例

ラムダ式ラムダ式 (クロージャとも呼ばれる) は、Java 8 のリリースを推進した最も重要な新機能...

MySQL は、現在のデータ テーブル内のすべての時間に対して指定された時間間隔を増加または減少させます (推奨)

DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...

VMware のインストールと使用時の問題と解決策

仮想マシンは使用中であるか、接続できません次のようなエラーが報告された場合解決まずこのページにアクセ...

MySQL データベースの制約とデータ テーブルの設計原則

目次1. データベースの制約1.1 はじめに1.2 制約の種類1.3 ヌルでない1.4 ユニーク1....

Vueは複数の画像の追加、表示、削除を実装します

この記事では、Vueで複数の画像を追加、表示、削除するための具体的なコードを参考までに紹介します。具...

HTML のインラインブロックの空白を素早く削除する 5 つの方法

inline-block プロパティ値は、「インライン」要素のマージンとパディングを制御する必要があ...

Vueが初めて要素を取得できなかったときの解決記録

序文Vue で要素を初回取得できない問題の解決方法は、ポップアップ ウィンドウで要素を取得するために...