みなさんこんにちは。私は梁旭です。 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. Oracle は大規模データベースですが、MySQL は小規模から中規模のデータベースです。O...
[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...
必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...
JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? Java...
前回の記事 https://www.jb51.net/article/154153.htm では、B...
JavaScript を使用して Web ページ クロックを実装します。効果は次の図に示されています...
使用 <div id="アプリ"> <router-link ...
selinux ( Security-Enhanced Linux)は、Linux カーネル モジュ...
目次(I) Workbenchを使用してデータベースを操作する①データベースを作成する② データベー...
目次1. v-text (v-instruction name = "variable&q...
1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...
公式ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/...
今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...
目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...
まずは本体から始めましょう:ウェブページを閲覧するとき、最初に目に留まるのは通常、ページの背景です。...