みなさんこんにちは。私は梁旭です。 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つの方法
最近、私たちの小さなチームは、サーバー上の共有フォルダーを共有して、全員がパブリックリソースドキュメ...
目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...
Linux システムは典型的なマルチユーザー システムです。異なるユーザーは異なる立場にあり、異なる...
序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...
コマンドライン mysqld –skip-grant-tables は mysql8 では正常に起動...
1. Vue - 最初の vue-cli プログラムVueの開発はNodeJSに基づいています。実際...
データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...
バックグラウンド コントローラー @RequestMapping("/getPDFStre...
方法1:フロート:右さらに、フローティングにするとレイアウトがよりコンパクトになります(隙間がなくな...
序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...
問題の説明仕事で以下の成果を達成したいと考えています。 解決div タグに相対配置を追加し、絶対配置...
序文ヒント: ここで、この記事に記録するおおよその内容を追加できます。例えば、人工知能の継続的な発展...
序文ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. オブジェクトスト...
現在、Web デザインではタブが広く使用されていますが、一般的に次の 2 つのタイプに分けられます。...
序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...