技術ノート Linux Linux で tee コマンドを使用する方法

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

重要なポイント

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

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

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

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

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

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

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

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

 [オプション]...[ファイル]...

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

ティー --バージョン

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

ティー --ヘルプ

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

tee コマンドのオプション

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

オプション

説明

-a or --append

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

-i or --ignore-interrupts

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

-p or --output-error

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

--help

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

--version

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

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

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

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

 〜 |ティーリスト.txt

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

猫リスト.txt

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

 echo "Ubuntu へようこそ" |ティー出力.txt

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

猫の出力.txt 

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

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

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

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

 echo "Ubuntu へようこそ" |ティー ファイル1.txt ファイル2.txt ファイル3.txt

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

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

同様に、 cat コマンドも同じ出力を表示します。

 cat -v ファイル1.txt ファイル2.txt ファイル3.txt

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

「 Linux で tee コマンドを使用する方法」に関するベスト動画選定!

Linuxコマンドをこっそり練習する方法㊙
【Linuxコマンドの基本02】一行で書くプログラム ワンライナー (この動画で解説してあるコマンド:grep sort uniq awk tee ps)
Linux で tee コマンドを使用する方法

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

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

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

猫の出力.txt

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

 echo "Linux 上の tee コマンド" | tee -a 出力.txt

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

猫の出力.txt 

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

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

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

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

 echo "Ubuntu へようこそ" |ティー出力.txt > /dev/null

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

猫の出力.txt 

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

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

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

 echo "これは Ubuntu です" |ティー出力.txt |トイレ -c

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

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

猫の出力.txt

sudo での tee コマンドの使用

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

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

 echo "これは Ubuntu です" | tee -a /etc/file.conf

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

 echo "これは Ubuntu です" | sudo tee -a /etc/file.conf

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

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

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

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

 #!/bin/bash
date | tee log.txt

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

猫のログ.txt

tee コマンドを使用して、引数としてさらにファイル名を指定することで、複数のファイルに書き込むこともできます。

 #!/bin/bash
date | tee log1.txt log2.txt

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

猫 log1.txt log2.txt

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

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

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

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

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

 bash テスト.sh

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

Linux システムがどの程度適切に実行されているかを監視するには、そのプロセスのアクティビティを観察する必要があります。これには、CPU とメモリの使用量、ディスク I/O、ネットワーク アクティビティが含まれます。パフォーマンスのボトルネックを特定すると、システム リソースが最適化され、システムが効率的に動作するようになります。

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