GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでTeeとXargsを使用して標準入力からコマンドを実行する方法

コマンドラインを使用しているときに、あるプログラムの出力(たとえば、システム情報や統計を生成するツール)を別のプログラム(テキストフィルタリングやgrep、sed、awkなどのパターン検索ツールなど)の入力として直接渡すことができます。さらなる処理のために)、パイプラインを使用します。

また読む :Linux I / O(入力/出力)リダイレクトの仕組みの基本を学ぶ

コマンドラインを構築するためにパイプラインで使用できる最も重要なコマンドラインユーティリティの2つは次のとおりです。

  • xargs –標準入力からデータのストリームを読み取り、コマンドラインを生成して実行します。
  • ティー –標準入力から読み取り、標準出力と1つまたは複数のファイルに同時に書き込みます。リダイレクトコマンドのようなものです。

この簡単な記事では、パイプを使用して標準入力から複数のコマンドを作成して実行する方法について説明します。 、ティー およびxargs Linuxのコマンド。

パイプを使用するための最も単純な構文 、Linuxチュートリアルの多くのコマンドですでに見たことがあるかもしれませんが、次のとおりです。ただし、複数のコマンドを使用して、より長いコマンドラインを作成できます。

$ command1 args | command2 args 
OR
# command1 args | command2 args | command3 args ...

以下は、パイプラインを使用してdmesgコマンドの出力をheadコマンドに渡す例です。

$ dmesg | head

xargsを使用してコマンドを実行する方法

この例では、2番目のコマンドがxargsを使用して複数行の出力を1行に変換します。

$ ls -1 *.sh
$ ls -1 *.sh | xargs

リスト内の各ファイルの行/単語/文字の数を数えるには、以下のコマンドを使用します。

$ ls *.sh | xargs wc -l	    #count number of lines in each file
$ ls *.sh | xargs wc -w	    #count number of words in each file
$ ls *.sh | xargs wc -c	    #count number of characters in each file
$ ls *.sh | xargs wc	    #count lines, words and characters in each file

以下のコマンドは、 Allという名前のディレクトリを検索して再帰的に削除します。 現在のディレクトリにあります。

$ find . -name "All" -type d -print0 | xargs  -0 /bin/rm -rf "{}"

オプション-print0を指定したfindコマンド アクションを使用すると、標準出力に完全なディレクトリパスを出力し、その後にヌル文字と -0 xargsを出力できます。 フラグはファイル名のスペースを扱います。

他の実用的なxargsコマンドを見つけることができます これらの記事の使用例:

  1. Linuxでファイルを複数のディレクトリにコピーする方法
  2. Linuxではすべてのファイルとディレクトリ名を小文字に変更
  3. PNGをJPGに、またはその逆にバッチ変換する4つの方法
  4. ディレクトリ内のすべてのファイルを削除する3つの方法(拡張子が1つまたは少数のファイルを除く)

Linuxでコマンドを使用してTeeを使用する方法

この例は、コマンド出力を標準出力に送信してファイルに保存する方法を示しています。以下のコマンドを使用すると、Linuxで最も高いメモリとCPU使用率で実行中のプロセスを表示できます。

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt
$ cat  topprocs.txt

既存のファイルにデータを追加するには、 -aを渡します フラグ。

$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt 

詳細については、ティーをご覧ください。 およびxargs マニュアルページ。

$ man xargs
$ man tee

それで全部です!特別記事A– Z Linuxコマンド–概要と例を確認することを忘れないでください。

この記事では、パイプラインを使用してコマンドラインを生成する方法について説明しました。 xargsおよびteeコマンド。以下のフィードバックフォームから、質問したり、考えを共有したりできます。


Linux
  1. Linuxコマンドを保存してオンデマンドで使用する方法

  2. Linux – Linuxからブートローダーを実行する方法は?

  3. Linux コマンドを使用して OS とバージョンを確認する方法

  1. Linuxコマンドでの(!)記号または演算子の10の驚くべき不思議な使用法

  2. Linuxコマンド:jobs、bg、およびfg

  3. Linux でソースから (および YUM を使用して) MongoDB をインストールする方法

  1. IPコマンドを使用してLinuxで静的ルートを追加および削除する方法

  2. Linuxを使用してディレクトリとファイルを削除する方法

  3. Linuxコマンドラインを使用してファイルとディレクトリを削除する方法