Linux で tee コマンドを使用する方法

Linux で tee コマンドを使用する方法

重要なポイント

  • Linux の「tee」コマンドは、コマンドの出力をファイルに保存すると同時に、ターミナルに表示します。
  • また、出力を複数のファイルに同時に書き込むことができるため、システム ログのバックアップと追跡が簡単に行えます。
  • 「tee」コマンドは、パイプを介して他のコマンドと一緒に使用することもできます。これにより、出力をファイルに保存しながらさらに処理することができます。たとえば、次のコマンドの「ls」と一緒に使用できます。ティーリスト.txt」

このteeコマンドは、後で確認できるようにコマンドの出力を保存できます。このコマンドは、出力を画面に表示するだけでなく、別のログ ファイルに記録します。ディスク領域の使用状況を長期的に追跡できるように、df コマンドの出力をファイルに保存したいとします。このコマンドはプロセスの記録を記録するため、プロセスのトラブルシューティングに役立ちます。

Linux の tee コマンドとは何ですか?

Linuxteeコマンドは、Linux での時間を節約し、効率を向上させるための便利なツールです。標準入力 (stdin)を読み取り、標準出力 (stdout)と指定したファイルの両方に書き込むことができます。このteeコマンドは、水を 2 方向に分割する T 字型のパイプのように機能します。プログラムの出力を表示し、それを同時にファイルに保存できます。

このteeコマンドは両方のことを同時に実行します。選択したファイルまたは変数に出力をコピーして表示できます。このコマンドは、出力を別の場所に送信するためにシェル スクリプトや端末コマンドでも使用されます。このteeコマンドを使用すると、バックアップを作成したり、スクリプト内のエラーを見つけたり、システム ログを追跡したりできます。

このコマンドを使用すると、他のコマンドとパイプすることteeもできます。このようにして、出力をファイルに保存し、他のコマンドでさらに処理することもできます。

ほとんどすべての Linux ディストリビューションにはtee、Coreutils パッケージの一部であるコマンドがプリインストールされています。

このteeコマンドは、他の Linux コマンドと同様の構文に従います。これには、-OPTIONS と FILES という 2 つの引数があります。

tee [OPTION]... [FILE]...

使用しているコマンドのバージョンを確認するにはtee、次のコマンドを実行します。

tee --version

ターミナル上の tee コマンドのバージョン

コマンドの構文と使用可能な引数についてヘルプが必要な場合はtee、次のように入力します。

tee --help

ティーコマンドヘルプ

tee コマンドのオプション

このteeコマンドには、その機能を変更するためのいくつかのオプションがあります。以下の表は、コマンドを効率的に使用するのに役立ついくつかのオプションを示していますtee

オプション

説明

-a or --append

出力を上書きするのではなく、ファイルの末尾に追加します。

-i or --ignore-interrupts

Ctrl+C などの割り込み信号を無視します。

-p or --output-error

ファイルへの書き込み時に発生する各エラーについて、標準エラーにエラー メッセージを出力します。

--help

コマンドオプションに関する基本的なヘルプを表示します。

--version

コマンドのバージョンを表示しますtee

tee を使用して Linux で出力をファイルに保存する

このteeコマンドは、コマンドの出力をファイルに保存すると同時に、端末に表示します。たとえば、このコマンドを使用すると、ホーム ディレクトリ内のファイルとディレクトリをtee表示したり、それらを別のファイルに保存したりできます。これを行うには、次のようにコマンドをls コマンドでパイプ処理します。tee

ls ~ | tee list.txt

ls を tee コマンドで実行し、出力をテキスト ファイルに保存します

これにより、ホーム ディレクトリ内のすべてのファイルとディレクトリが表示され、それらが「list.txt」に書き込まれます。「list.txt」の内容を表示するには、任意のテキスト エディターまたはcatless、またはmorecommand などのコマンドを使用します。

cat list.txt

リストテキストファイルを読み取るための cat コマンド

echo コマンドを使用して別の例を実行し、出力を保存して表示してみましょう。まず、echoコマンドを使用して端末上にテキストを表示します。その後、teeコマンドをパイプしてecho、同じテキストを「output.txt」というファイルに書き込みます。

echo "Welcome to Ubuntu"| tee output.txt

tee コマンドを使用した echo コマンド パイプ

最後に、cat コマンドを使用して、「output.txt」ファイルの内容を確認します。

cat output.txt

テキストファイルの内容を読み取る cat コマンド

tee を使用して Linux で出力を複数のファイルに書き込む

このteeコマンドは、出力を複数のファイルに同時に書き込むこともできます。tee書き込むコマンドの後にファイル名を定義するだけです。単純にスペースで区切ってください。

たとえば、echoコマンドの出力を 3 つの異なるファイルに保存するには、次の構文を使用します。

echo "Welcome to Ubuntu"| tee file1.txt file2.txt file3.txt

複数のファイル名を持つ tee コマンドでパイプされた echo コマンド

これにより、文字列「Welcome to Ubuntu」が 3 つのファイル (file1.txt、file2.txt、file3.txt) に書き込まれます。端末にも表示されます。これらのファイルの内容を表示するには、catまたはheadコマンドを使用します。

head -v file1.txt file2.txt file3.txt

複数のテキスト ファイルの内容を読み取る head コマンド

同様に、このcatコマンドでも同じ出力が表示されます。

cat -v file1.txt file2.txt file3.txt

複数のテキストファイルの内容を読み取る cat コマンド

このコマンドを使用すると、出力を任意の数のファイルに書き込むことができますteeteeコマンドの後にスペースを入れてファイル名を入力するだけです。

tee を使用して出力をファイルに追加する

Linux 上のコマンドteeは、デフォルトでファイルの内容を上書きします。コマンドの-aまたは--appendオプションを使用すると、teeファイルの内容を置き換えるのではなく、出力をファイルの末尾に追加できます。

ファイルにデータを追加する前に、以下のコマンドを使用して、ファイルに配置されている現在のデータを確認してみましょう。

cat output.txt

cat コマンドは、output.txt ファイルからデータを読み取ります。

これで、次のように入力して、新しいデータを上書きせずに追加できます。

echo "tee Command on Linux"| tee -a output.txt

T シャツと -a オプションを使用してパイプされた echo コマンドで、出力を既存のファイルに追加します

これにより、コマンドの出力が、その中の以前の内容を削除せずに、output.txt の末尾に追加されます。確認するには、次のcatコマンドを実行します。

cat output.txt

出力テキスト ファイルを読み取る cat コマンド

t 字型を使用して出力を非表示にする

場合によっては、コマンドの出力を端末に表示せずにファイルに保存したい場合があります。これは、不要な出力で端末を混乱させることなく、コマンドをサイレントに実行したい場合に便利です。このような場合は、コマンド出力を/dev/nullデバイスに送信する必要があります。は、/dev/null「ヌル デバイス」または「ヌル ファイル」と呼ばれることがよくあります。これはデータ シンクとして機能します。つまり、書き込まれたデータは破棄され、実際にはどこにも保存されません。

コマンドの出力を非表示にする方法は次のとおりですecho

echo "Welcome to Ubuntu"| tee output.txt > /dev/null

tee コマンドと dev null デバイスでパイプされた echo コマンド

これにより、コマンドの出力がoutput.txtに書き込まれ、また に送信され/dev/null、事実上画面から非表示になります。ただし、このcatコマンドを使用すると、ファイルの内容を表示して出力を確認できます。

cat output.txt

テキスト ファイル content-1 を読み取る cat コマンド

tee を使用して、あるコマンドの出力を別のコマンドにリダイレクトする

このteeコマンドは、1 つのコマンドの出力をファイルまたは他のコマンドにリダイレクトすることもできます。パイプ (|) を使用したコマンドteeを使用すると、最初のコマンドの出力を標準出力と 2 番目のコマンドまたはファイルの両方に送信できます。次の例を考えてみましょう。

echo "This is Ubuntu"| tee output.txt | wc -c

echo コマンドを tee と wc でパイプして出力をリダイレクトします

コマンドecho出力「Welcome to Ubuntu」は、output.txt ファイルに書き込まれます。その後、teeコマンドでパイプライン演算子が使用されます。これにより、ファイルの内容がwc コマンドに渡されます。このwcコマンドは、カウントされた合計文字数を出力し、整数値を表示します。

teeコマンドが出力もファイルに書き込んだかどうかを確認するには、cat次のコマンドを使用してファイルの内容を表示します。

cat output.txt

出力テキスト ファイルを読み取る Cat コマンド

sudo での tee コマンドの使用

このコマンドを使用するとtee、コマンドの出力が通常のファイルに書き込まれます。ただし、システム ディレクトリや保護されたファイルなど、一部のファイルとディレクトリを変更するにはスーパーユーザー権限が必要です。これらのファイルまたは他のユーザーが所有するファイルに書き込むには、teeと組み合わせて使用​​しますsudo

以下の例では、 sudoを使用せずに root が所有する「file.conf」ファイルを書き込もうとすると、アクセス許可拒否エラーが発生します。

echo "This is Ubuntu"| tee -a /etc/file.conf

echo コマンドが sudo 権限なしで tee コマンドとパイプされました

ただし、 をコマンドsudoと一緒に使用するとtee、エラーなしで実行されます。このコマンドを使用すると、root ユーザーまたはファイルの所有者としてコマンドsudoを実行できます。次のコマンドを先頭にtee追加するだけです。sudotee

echo "This is Ubuntu"| sudo tee -a /etc/file.conf

sudo 権限を持つ tee コマンドでパイプされた echo コマンド

まず、teeコマンドはコマンド出力を取得しますecho。その後、sudo権限が昇格され、テキストがファイルに書き込まれます。

Bash スクリプトでの tee の使用例

このteeコマンドは、さまざまなスクリプト シナリオで役立ちます。これは、さらなる処理やデバッグのためにコマンドの出力をログに記録したりキャプチャしたりするのに役立ちます。このteeコマンドは出力を表示するだけでなく、後で使用できるように出力をファイルに保存します。

たとえば、ターミナルで日付と時刻を確認し、それを log.txt という名前のファイルに書き込む場合は、次のbash スクリプトを使用します。

#!/bin/bashdate | tee log.txt

日付をログファイルに保存する Bash スクリプト

この場合、標準入力は date コマンドの出力であり、現在の日付と時刻が表示されます。このteeコマンドは、この出力を端末とファイル log.txt に書き込みます。ファイル log.txt が存在しない場合は、作成されます。-a存在する場合、ファイルに追加するオプションを使用しない限り、上書きされます。

cat log.txt

ログファイルの内容を読み取る Cat コマンド

#!/bin/bashdate | tee log1.txt log2.txt

tee コマンドを使用して複数のファイルを書き込む Bash スクリプト

このスクリプトは、日付と時刻を端末と、log1.txt および log2.txt という名前の 2 つのファイルに出力します。コマンドを使用して両方のファイルの内容を読み取りますcat

cat log1.txt log2.txt

複数のログ テキスト ファイルの内容を読み取る Cat コマンド

コマンドを使用して、入力を受け取り、それをログ ファイル内に保存する別の単純な bash スクリプトを考えてみましょうtee

#!/bin/bashlog_file="user_input.log"echo "Please enter some text:"read user_inputecho "$user_input" | tee -a "$log_file"echo "User input has been logged to $log_file"

ユーザー入力を読み取り、出力をターミナルに表示する Bash スクリプト

指定された bash スクリプトで、「log_file」という変数を定義し、それに「user_input.log」など、使用するログ ファイルの名前を割り当てます。次に、echoコマンドとreadコマンドを使用して、テキストを入力して変数に保存するように求めます。次に、ターミナルに Enter 入力を表示し、それをログ ファイルに追加するオプションを指定してteeコマンドを使用します。-a

最後に、echoコマンドを再度使用してフィードバックを提供します。これにより、入力がファイルに記録されたことがわかります。このようにして、入力をログ ファイルに保存し、画面に表示する bash スクリプトを作成できます。

コマンドを使用して bash スクリプトを実行しますbash

bash test.sh

テストスクリプトを実行する bash コマンド

Linux システム上のプロセスの監視

Linux システムがどの程度適切に実行されているかを監視するには、そのプロセスのアクティビティを観察する必要があります。これには、CPU とメモリの使用量、ディスク I/O、ネットワーク アクティビティが含まれます。

このteeコマンドと同様に、Linux にはプロセスを簡単に監視するのに役立つコマンドが他にも複数あります。主なコマンドには、pstoppgrepコマンドなどがあります。Linux システムは多くの場合、複数のプロセスを同時に実行します。これらのコマンドを使用すると、重要なタスクに優先順位を付け、リソースを適切に割り当て、リソースの競合を防ぐことができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です