Linux コマンド teeで標準出力とファイルの両方に出力する | アントレプログラマー

Linux コマンド teeで標準出力とファイルの両方に出力する

Linux

こんにちは、ニキです。

Linuxには、さまざまな便利なコマンドが用意されていますが、その中でも「tee」コマンドは、標準入力と標準出力を同時に処理できる非常に便利なツールです。特に、コマンドの出力をファイルに保存しつつ、同時にターミナルに表示させたいときに役立ちます。このブログでは、「tee」コマンドの基本的な使い方から応用的な活用方法までを解説します。

Takaharu Niki

・Webエンジニア6年目。
・バックエンドを中心に、フロントエンドやDevOps業務も経験。
・現在は、自社サービス企業のテックリードとして従事。

Takaharu Nikiをフォローする

Linux コマンド teeの基本的な使い方

まず、「tee」コマンドの基本的な役割について理解しておきましょう。通常、コマンドの出力をファイルに保存する場合はリダイレクト(>>>)を使用します。しかし、その場合ターミナルには出力が表示されず、すべてがファイルに書き込まれます。「tee」コマンドを使うと、出力をそのままターミナルに表示しながら、指定したファイルにも保存することができます。

基本的な構文

command | tee [オプション] ファイル名
  • command:出力を生成する任意のコマンド
  • |(パイプ):前のコマンドの出力を次のコマンドの入力として渡す
  • tee:出力をファイルに書き込みつつ、標準出力に表示するコマンド
  • ファイル名:出力を保存するファイル

例: 出力をターミナルとファイルに同時に表示

次に、具体的な例を見てみましょう。

ls -l | tee output.txt

このコマンドは、ディレクトリ内のファイルリストを詳細表示(ls -l)しつつ、その結果を output.txt というファイルに保存します。ターミナルにも同時に出力が表示されます。

Linux コマンド tee の上書きモードと追記モード

「tee」コマンドは、出力のファイルへの書き込み方法を選択できる点も便利です。ファイルに出力を上書きするか、追記するかを指定できます。

ファイルに上書きする場合

デフォルトでは、ファイルに上書きします。もし既存のファイルがある場合、そのファイルの内容は消去され、新たに出力が書き込まれます。

echo "Hello, World!" | tee output.txt

output.txt に「Hello, World!」という内容が上書きされます。

ファイルに追記する場合

既存の内容を保持したまま、新しい出力を追加したい場合は、-a(または --append)オプションを使用します。

echo "New Line" | tee -a output.txt

この場合、output.txt の既存の内容に「New Line」が追加されます。

Linux コマンド tee で複数のファイルに出力

「tee」コマンドのもう一つの便利な機能は、複数のファイルに同時に出力を保存できる点です。これにより、1つのコマンドの出力を複数のファイルに分散して記録することが可能です。

例: 複数ファイルへの同時出力

echo "Multiple files" | tee file1.txt file2.txt

このコマンドは、「Multiple files」という文字列を file1.txtfile2.txt に同時に書き込みます。もちろん、ターミナルにも表示されます。

Linux コマンド tee の実用的な活用例

「tee」コマンドは、日常的なタスクでも非常に有効に活用できます。ここでは、具体的なシチュエーションでの使用例をいくつかご紹介します。

ログファイルのリアルタイム監視

システムのログを確認しながら、ファイルに保存して後から分析する場合、「tee」コマンドが役立ちます。

tail -f /var/log/syslog | tee logfile.txt

このコマンドは、システムログ(syslog)の内容をリアルタイムで表示しつつ、logfile.txt にも保存します。システムのトラブルシューティングやリアルタイム監視に非常に便利です。

コマンドの出力をファイルとパイプで処理

「tee」コマンドは、他のコマンドと組み合わせてパイプライン処理をしながら、出力を記録することもできます。例えば、grep の検索結果を保存しつつ、更に別の処理を加える場合などです。

grep "error" logfile.txt | tee errors.txt | less

このコマンドは、logfile.txt から「error」という文字列を含む行を検索し、その結果を errors.txt に保存しながら、less コマンドでページ単位で表示します。

まとめ

Linuxの「tee」コマンドは、標準出力をターミナルに表示しつつ、ファイルにも保存するという非常に便利な機能を提供します。基本的な使い方だけでなく、上書き・追記や複数ファイルへの出力、パイプライン処理との組み合わせなど、多様なシーンで活用できます。システムの監視やトラブルシューティング、ログの記録など、さまざまな業務で役立つツールですので、ぜひ試してみてください。

「tee」コマンドをマスターすれば、作業効率が向上し、ターミナル操作の幅が広がること間違いなしです。

タイトルとURLをコピーしました