Linux で tee コマンドを使用する方法
![Linux で tee コマンドを使用する方法](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/52848911559_e76b589879_o-2-640x375.webp)
重要なポイント
- 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 コマンドのバージョン](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/version-of-tee-command-on-terminal.webp)
コマンドの構文と使用可能な引数についてヘルプが必要な場合はtee
、次のように入力します。
tee --help
![ティーコマンドヘルプ ティーコマンドヘルプ](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/tee-command-help.webp)
tee コマンドのオプション
このtee
コマンドには、その機能を変更するためのいくつかのオプションがあります。以下の表は、コマンドを効率的に使用するのに役立ついくつかのオプションを示していますtee
。
オプション |
説明 |
---|---|
|
出力を上書きするのではなく、ファイルの末尾に追加します。 |
|
Ctrl+C などの割り込み信号を無視します。 |
|
ファイルへの書き込み時に発生する各エラーについて、標準エラーにエラー メッセージを出力します。 |
|
コマンドオプションに関する基本的なヘルプを表示します。 |
|
コマンドのバージョンを表示します |
tee を使用して Linux で出力をファイルに保存する
このtee
コマンドは、コマンドの出力をファイルに保存すると同時に、端末に表示します。たとえば、このコマンドを使用すると、ホーム ディレクトリ内のファイルとディレクトリをtee
表示したり、それらを別のファイルに保存したりできます。これを行うには、次のようにコマンドをls コマンドでパイプ処理します。tee
ls ~ | tee list.txt
![ls を tee コマンドで実行し、出力をテキスト ファイルに保存します ls を tee コマンドで実行し、出力をテキスト ファイルに保存します](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/ls-with-tee-command-and-save-output-to-a-text-file.webp)
これにより、ホーム ディレクトリ内のすべてのファイルとディレクトリが表示され、それらが「list.txt」に書き込まれます。「list.txt」の内容を表示するには、任意のテキスト エディターまたはcat、less、またはmore
command などのコマンドを使用します。
cat list.txt
![リストテキストファイルを読み取るための cat コマンド リストテキストファイルを読み取るための cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-to-read-a-list-text-file.webp)
echo コマンドを使用して別の例を実行し、出力を保存して表示してみましょう。まず、echo
コマンドを使用して端末上にテキストを表示します。その後、tee
コマンドをパイプしてecho
、同じテキストを「output.txt」というファイルに書き込みます。
echo "Welcome to Ubuntu"| tee output.txt
![tee コマンドを使用した echo コマンド パイプ tee コマンドを使用した echo コマンド パイプ](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-pipe-with-the-tee-command.webp)
最後に、cat コマンドを使用して、「output.txt」ファイルの内容を確認します。
cat output.txt
![テキストファイルの内容を読み取る cat コマンド テキストファイルの内容を読み取る cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-to-read-text-file-content.webp)
tee を使用して Linux で出力を複数のファイルに書き込む
このtee
コマンドは、出力を複数のファイルに同時に書き込むこともできます。tee
書き込むコマンドの後にファイル名を定義するだけです。単純にスペースで区切ってください。
たとえば、echo
コマンドの出力を 3 つの異なるファイルに保存するには、次の構文を使用します。
echo "Welcome to Ubuntu"| tee file1.txt file2.txt file3.txt
![複数のファイル名を持つ tee コマンドでパイプされた echo コマンド 複数のファイル名を持つ tee コマンドでパイプされた echo コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-tee-command-with-multiple-file-names.webp)
これにより、文字列「Welcome to Ubuntu」が 3 つのファイル (file1.txt、file2.txt、file3.txt) に書き込まれます。端末にも表示されます。これらのファイルの内容を表示するには、cat
またはhead
コマンドを使用します。
head -v file1.txt file2.txt file3.txt
![複数のテキスト ファイルの内容を読み取る head コマンド 複数のテキスト ファイルの内容を読み取る head コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/head-command-to-read-multiple-text-file-content.webp)
同様に、このcat
コマンドでも同じ出力が表示されます。
cat -v file1.txt file2.txt file3.txt
![複数のテキストファイルの内容を読み取る cat コマンド 複数のテキストファイルの内容を読み取る cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-to-read-multiple-text-file-content.webp)
このコマンドを使用すると、出力を任意の数のファイルに書き込むことができますtee
。tee
コマンドの後にスペースを入れてファイル名を入力するだけです。
tee を使用して出力をファイルに追加する
Linux 上のコマンドtee
は、デフォルトでファイルの内容を上書きします。コマンドの-a
または--append
オプションを使用すると、tee
ファイルの内容を置き換えるのではなく、出力をファイルの末尾に追加できます。
ファイルにデータを追加する前に、以下のコマンドを使用して、ファイルに配置されている現在のデータを確認してみましょう。
cat output.txt
![cat コマンドは、output.txt ファイルからデータを読み取ります。 cat コマンドは、output.txt ファイルからデータを読み取ります。](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-to-read-the-data-from-the-output-txt-file.webp)
これで、次のように入力して、新しいデータを上書きせずに追加できます。
echo "tee Command on Linux"| tee -a output.txt
![T シャツと -a オプションを使用してパイプされた echo コマンドで、出力を既存のファイルに追加します T シャツと -a オプションを使用してパイプされた echo コマンドで、出力を既存のファイルに追加します](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-a-tee-and-a-option-to-append-output-to-the-existing-file.webp)
これにより、コマンドの出力が、その中の以前の内容を削除せずに、output.txt の末尾に追加されます。確認するには、次のcat
コマンドを実行します。
cat output.txt
![出力テキスト ファイルを読み取る cat コマンド 出力テキスト ファイルを読み取る cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-that-reads-the-output-text-file.webp)
t 字型を使用して出力を非表示にする
場合によっては、コマンドの出力を端末に表示せずにファイルに保存したい場合があります。これは、不要な出力で端末を混乱させることなく、コマンドをサイレントに実行したい場合に便利です。このような場合は、コマンド出力を/dev/null
デバイスに送信する必要があります。は、/dev/null
「ヌル デバイス」または「ヌル ファイル」と呼ばれることがよくあります。これはデータ シンクとして機能します。つまり、書き込まれたデータは破棄され、実際にはどこにも保存されません。
コマンドの出力を非表示にする方法は次のとおりですecho
。
echo "Welcome to Ubuntu"| tee output.txt > /dev/null
![tee コマンドと dev null デバイスでパイプされた echo コマンド tee コマンドと dev null デバイスでパイプされた echo コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-tee-command-and-dev-null-device.webp)
これにより、コマンドの出力がoutput.txtに書き込まれ、また に送信され/dev/null
、事実上画面から非表示になります。ただし、このcat
コマンドを使用すると、ファイルの内容を表示して出力を確認できます。
cat output.txt
![テキスト ファイル content-1 を読み取る cat コマンド テキスト ファイル content-1 を読み取る cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-to-read-text-file-content-1.webp)
tee を使用して、あるコマンドの出力を別のコマンドにリダイレクトする
このtee
コマンドは、1 つのコマンドの出力をファイルまたは他のコマンドにリダイレクトすることもできます。パイプ (|) を使用したコマンドtee
を使用すると、最初のコマンドの出力を標準出力と 2 番目のコマンドまたはファイルの両方に送信できます。次の例を考えてみましょう。
echo "This is Ubuntu"| tee output.txt | wc -c
![echo コマンドを tee と wc でパイプして出力をリダイレクトします echo コマンドを tee と wc でパイプして出力をリダイレクトします](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-tee-and-wc-to-redirect-the-output.webp)
コマンドecho
出力「Welcome to Ubuntu」は、output.txt ファイルに書き込まれます。その後、tee
コマンドでパイプライン演算子が使用されます。これにより、ファイルの内容がwc コマンドに渡されます。このwc
コマンドは、カウントされた合計文字数を出力し、整数値を表示します。
tee
コマンドが出力もファイルに書き込んだかどうかを確認するには、cat
次のコマンドを使用してファイルの内容を表示します。
cat output.txt
![出力テキスト ファイルを読み取る Cat コマンド 出力テキスト ファイルを読み取る Cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-that-reads-output-text-file.webp)
sudo での tee コマンドの使用
このコマンドを使用するとtee
、コマンドの出力が通常のファイルに書き込まれます。ただし、システム ディレクトリや保護されたファイルなど、一部のファイルとディレクトリを変更するにはスーパーユーザー権限が必要です。これらのファイルまたは他のユーザーが所有するファイルに書き込むには、tee
と組み合わせて使用しますsudo
。
以下の例では、 sudoを使用せずに root が所有する「file.conf」ファイルを書き込もうとすると、アクセス許可拒否エラーが発生します。
echo "This is Ubuntu"| tee -a /etc/file.conf
![echo コマンドが sudo 権限なしで tee コマンドとパイプされました echo コマンドが sudo 権限なしで tee コマンドとパイプされました](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-tee-command-without-sudo-permission.webp)
ただし、 をコマンドsudo
と一緒に使用するとtee
、エラーなしで実行されます。このコマンドを使用すると、root ユーザーまたはファイルの所有者としてコマンドsudo
を実行できます。次のコマンドを先頭にtee
追加するだけです。sudo
tee
echo "This is Ubuntu"| sudo tee -a /etc/file.conf
![sudo 権限を持つ tee コマンドでパイプされた echo コマンド sudo 権限を持つ tee コマンドでパイプされた echo コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/echo-command-piped-with-tee-command-with-sudo-permission.webp)
まず、tee
コマンドはコマンド出力を取得しますecho
。その後、sudo
権限が昇格され、テキストがファイルに書き込まれます。
Bash スクリプトでの tee の使用例
このtee
コマンドは、さまざまなスクリプト シナリオで役立ちます。これは、さらなる処理やデバッグのためにコマンドの出力をログに記録したりキャプチャしたりするのに役立ちます。このtee
コマンドは出力を表示するだけでなく、後で使用できるように出力をファイルに保存します。
たとえば、ターミナルで日付と時刻を確認し、それを log.txt という名前のファイルに書き込む場合は、次のbash スクリプトを使用します。
#!/bin/bashdate | tee log.txt
![日付をログファイルに保存する Bash スクリプト 日付をログファイルに保存する Bash スクリプト](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/bash-script-to-save-date-to-log-file.webp)
この場合、標準入力は date コマンドの出力であり、現在の日付と時刻が表示されます。このtee
コマンドは、この出力を端末とファイル log.txt に書き込みます。ファイル log.txt が存在しない場合は、作成されます。-a
存在する場合、ファイルに追加するオプションを使用しない限り、上書きされます。
cat log.txt
![ログファイルの内容を読み取る Cat コマンド ログファイルの内容を読み取る Cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-that-reads-the-log-file-content.webp)
#!/bin/bashdate | tee log1.txt log2.txt
![tee コマンドを使用して複数のファイルを書き込む Bash スクリプト tee コマンドを使用して複数のファイルを書き込む Bash スクリプト](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/bash-script-to-write-multiple-files-using-the-tee-command.webp)
このスクリプトは、日付と時刻を端末と、log1.txt および log2.txt という名前の 2 つのファイルに出力します。コマンドを使用して両方のファイルの内容を読み取りますcat
。
cat log1.txt log2.txt
![複数のログ テキスト ファイルの内容を読み取る Cat コマンド 複数のログ テキスト ファイルの内容を読み取る Cat コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/cat-command-that-reads-multiple-log-text-file-content.webp)
コマンドを使用して、入力を受け取り、それをログ ファイル内に保存する別の単純な 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 スクリプト](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/bash-script-that-reads-user-input-and-displays-output-to-the-terminal.webp)
指定された bash スクリプトで、「log_file」という変数を定義し、それに「user_input.log」など、使用するログ ファイルの名前を割り当てます。次に、echo
コマンドとread
コマンドを使用して、テキストを入力して変数に保存するように求めます。次に、ターミナルに Enter 入力を表示し、それをログ ファイルに追加するオプションを指定してtee
コマンドを使用します。-a
最後に、echo
コマンドを再度使用してフィードバックを提供します。これにより、入力がファイルに記録されたことがわかります。このようにして、入力をログ ファイルに保存し、画面に表示する bash スクリプトを作成できます。
コマンドを使用して bash スクリプトを実行しますbash
。
bash test.sh
![テストスクリプトを実行する bash コマンド テストスクリプトを実行する bash コマンド](https://cdn.thefilibusterblog.com/wp-content/uploads/2023/10/bash-command-that-run-test-script.webp)
Linux システム上のプロセスの監視
Linux システムがどの程度適切に実行されているかを監視するには、そのプロセスのアクティビティを観察する必要があります。これには、CPU とメモリの使用量、ディスク I/O、ネットワーク アクティビティが含まれます。
このtee
コマンドと同様に、Linux にはプロセスを簡単に監視するのに役立つコマンドが他にも複数あります。主なコマンドには、ps、top、pgrepコマンドなどがあります。Linux システムは多くの場合、複数のプロセスを同時に実行します。これらのコマンドを使用すると、重要なタスクに優先順位を付け、リソースを適切に割り当て、リソースの競合を防ぐことができます。
コメントを残す