みなさんこんにちは。私は梁旭です。 Linux を使用しているときに、いくつかのコマンドを連結する必要があるが、コマンドの 1 つがパイプ入力を受け入れないという状況に遭遇したことはありませんか?この場合、 Linux では、すべての標準アプリケーションに 3 つのデータ ストリームが関連付けられています。これらは、標準入力ストリーム (stdin)、標準出力ストリーム (stdout)、および標準エラー ストリーム (stderr) です。これらのストリームはテキストを通じて動作し、テキストを使用して入力 (stdin) をコマンドに送信し、応答 (stdout) がターミナル ウィンドウにテキストとして表示されます。エラー メッセージは、ターミナル ウィンドウ (stderr) にテキストとしても表示されます。 Linux や Unix 系オペレーティング システムの優れた機能の 1 つは、1 つのコマンドの標準出力ストリームを別のコマンドの標準入力ストリームにパイプできることです。最初のコマンドは、その出力がターミナル ウィンドウに書き込まれるかどうかを気にしません。また、2 番目のコマンドは、その入力がキーボードから行われるかどうかを気にしません。 すべての Linux コマンドには 3 つの標準ストリームがありますが、すべてのコマンドが別のコマンドの標準出力を標準入力ストリームへの入力として受け入れるわけではありません。したがって、これらのコマンドに入力をパイプすることはできません。 xargs コマンド
$ ls -1 ./*.sh このコマンドは、現在のディレクトリ内のシェル スクリプト ファイルを一覧表示します。 出力を $ ls -1 ./*.sh | xargs ご覧のとおり、出力は長いテキスト文字列としてターミナルに書き込まれます。このことから、 wc コマンドで xargs を使用する
$ ls *.c | xargs wc 実行結果は次のとおりです。 コマンドの結果には、合計だけでなく各ファイルの統計も表示されます。 このコマンドは次の操作を実行します。 確認メッセージ付きでxargsを使用する
$ echo '1,2,3' | xargs -p touch ターミナルには実行されるコマンドが表示され、 $ 1 2 3 複数のコマンドで xargs を使用する
少し抽象的なので、例を挙げて説明しましょう。 まず、 $ ツリー -d 現在、サブディレクトリは images のみになります。 directors.txt ファイルには、作成するディレクトリの名前がいくつか含まれています。まずは $ cat ディレクトリ.txt これらの内容を入力データとして $ cat ディレクトリ.txt | xargs -I % sh -c 'echo %; mkdir %' このコマンドは次の操作を実行します。 cat directorys.txt : directorys.txt ファイルの内容 (作成するすべてのディレクトリ名) を コマンド実行結果: ディレクトリが作成されたかどうかは、 $ ツリー -d ファイルを複数の場所にコピーする
まず、 2 つのディレクトリの名前を ここでは、 $ echo ~/dir1/ ~/dir2/ | xargs -n 1 cp -v ./*.c ファイルを 2 つのディレクトリに 1 つずつコピーしました。 ネストされたディレクトリ内のファイルの削除 ファイル名にスペースやその他の特殊文字 (改行など) が含まれている場合、 ここでは $ find . -name "*.png" -type f -print0 | xargs -0 rm -v -rf "{}" このコマンドは次のアクションを実行します。 find . -name “*.png”: コマンドを実行すると、すべてのサブディレクトリが検索され、一致するファイルが削除されます。 ネストされたディレクトリの削除 ネストされたサブディレクトリのセットを削除したいとします。まず、 $ ツリー -d $ find . -name "level_one" -type d -print0 | xargs -0 rm -v -rf "{}" このコマンドは find を使用して、現在のディレクトリで level_one というディレクトリを再帰的に検索し、そのディレクトリ名を このコマンドと前のコマンドの違いは、検索される項目が最上位ディレクトリの名前であり、 削除される各ディレクトリの名前が印刷されます。 $ ツリー -d ネストされたサブディレクトリはすべて削除されました。 1つのファイルタイプを除くすべてのファイルを削除します
$ find . -type f -not -name "*.sh" -print0 | xargs -0 -I {} rm -v {} コマンドを実行した後、 $ ls -l Xargs で圧縮ファイルを作成する
現在のディレクトリで $ find ./ -name "*.sh" -type f -print0 | xargs -0 tar -cvzf script_files.tar.gz コマンド実行結果には、すべての .sh ファイルがリストされ、圧縮ファイルが作成されます。 要約する Linux で xargs コマンドを使用する方法についてはこれで終わりです。Linux で xargs コマンドを使用する方法についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vueユーザーが長時間操作せずにログインページからログアウトするように実装する2つの方法
この記事の例では、完全な選択機能を実装するためのVueの具体的なコードを参考までに共有しています。具...
リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...
目次1. ダウンロード2. インストールと解凍3. Tomcatを起動する4番目に、インストールが成...
手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...
目次序文1. データベースの基礎知識1. データベースとは何ですか? 2. データベースの分類3. ...
1. Centosイメージを使用してローカルのyumソースをビルドするCentOS をインストール...
目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...
システム パフォーマンスの専門家である Brendan D. Gregg 氏は、LinuxCon N...
1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...
序文同社の開発者は、データの更新時に replace into ステートメントを使用していました。不...
入力が進行中かどうかを検出するには、「onInput(event)」を使用しますコンテンツが変更され...
rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...
いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太...
スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...
Firefox の下位バージョンでは中国語の文字を入力できず、上位バージョンでは文字化けした文字が表...