端末で基本的なコマンドを実行すると、通常、出力は端末、つまり標準出力に出力されます。しかし、標準出力に出力するだけでなく、出力をファイルに保存できるとしたらどうでしょうか?これは、tee コマンドが行うことです。 Linux の tee コマンドは、stdin (標準入力) から読み取り、stdout (標準出力) および 1 つまたは複数のファイルに書き込みます。
tee コマンドの基本構文
tee コマンドの構文は次のとおりです。
$ コマンド |ティー [ オプション ] ファイル
次に、tee コマンドの使用例をいくつか見てみましょう。
tee コマンドの基本的な使い方
free を使用してメモリとスワップの使用状況を出力するとします。 コマンドを実行し、memory_usage.txt という名前のファイルに出力を保存します . tee コマンドは次のように呼び出されます。
$ free -h | tee memory_usage.txt
tee コマンドはコマンドから読み取り、出力を memory_usage.txt に保存します
出力が memory_usage.txt に保存されたことを確認するには ファイルは、示されているように cat コマンドを実行します。
$ cat memory_usage.txt
<強い>
出力を複数のファイルに書き込む
さらに、示されているように、出力を複数のファイルに保存できます
$ コマンド |ティー [ オプション ] ファイル 1 ファイル 2 …
以下のコマンドでは、文字列 “Hey, Welcome to Linux” は 2 つのテキスト ファイル file1.txt に保存されます。 およびfile2.txt
$ echo Hey, Welcome to Linux | tee file1.txt file2.txt
<強い>
コンテンツをファイルに追加する
通常、tee コマンドはファイルを上書きしますが、重要な既存のデータが消去される可能性があるため、常に望ましいとは限りません。ありがたいことに、 -a を使用できます ファイルにテキストを追加するオプション。これをテストしてみましょう。
まず、 稼働時間 の出力を書き込みます stats.txt へのコマンド
稼働時間 $ |ティー統計.txt
猫を使用 これを確認するコマンド。
$ cat stats.txt
次に、 free -h の出力を追加します メモリとスワップの使用状況をファイルに出力するコマンド。
$ free -h | tee -a stats.txt
もう一度、stats.txt の内容を確認してください ファイル。今回は、下のスクリーンショットに示すように、ファイルには 2 つのコマンドの出力が含まれます。これは、 free -h の出力を追加したためです。 stats.txt へのコマンド ファイルであるため、既存のテキストは影響を受けませんでした。
tee コマンドの出力を抑制する
ティー の出力が必要ない場合 コマンドは標準出力に出力され、 /dev/null にリダイレクトできます これは、情報を破棄する特別なデバイスであり、それに供給されます。
df -Th の出力を出力している以下の例を見てください。 コマンドをテキスト ファイルに出力しますが、ターミナルでの出力は抑制します。
$ df -Th | tee disk_usage.txt >/dev/null
tee コマンドに割り込みを無視させる
継続的に実行されているコマンドを停止したい場合があります。その場合、プログラムが中断された後でも、tee コマンドを正常に終了させることを検討してください。これを行うには、 -i を使用します または –割り込みを無視 示されている構文で提供されるオプション。
$ コマンド |ティー -i ファイル名
以下の ping コマンドは、継続的に ping リクエストを Google の DNS ( 8.8.8.8 ) に送信します。 4 つの連続した ping 要求の後、コマンドを中断しました。 T シャツについて -i を呼び出して正常に終了するコマンド オプション。
$ ping 8.8.8.8 | tee -i ping_stats.txt
-i なし オプションを使用すると、統計の出力と要約は出力されません。
tee コマンドを sudo と共に使用する
root ユーザーまたは別のログイン ユーザーが所有するファイルを変更する場合、sudo コマンドを呼び出さずに単に tee コマンドを使用すると、エラーが発生します。
以下の例では、anydesk-stable.list という新しいリポジトリを作成しています。 /etc/apt/sources.list.d の AnyDesk アプリケーション用 root ユーザー用の予約パスです。
$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list
予想どおり、そのパスでファイルを作成または変更する権限がないため、「権限が拒否されました」というエラーが発生しました。
解決策は tee の前に置くことです 示されているように sudo コマンドを使用します。
$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list
この際、tee の前に sudo を置いてからコマンドは成功です。
tee コマンドのヘルプ
その他のコマンド オプションと、tee コマンドの使用に関する支援については、以下のコマンドを実行してください。
$ tee --help
さらに、示されているようにマニュアルページを調べてください
$ man tee
バージョンを確認するには、次を実行します:
$ tee --version
<強い>
まとめ
これはすべて Linux の tee コマンドに関するものです。特に、このコマンドは標準入力 ( stdin ) から読み取り、その後標準出力 ( stdout ) およびファイルに書き込みます。