コマンドの実行結果を標準出力(画面)とファイルの両方に出力させることが出来る「tee」コマンドの使用方法を解説します。
はじめに
コマンドの実行結果をファイルに出力する方法として、リダイレクトがあります。
しかし、リダイレクトでファイルに出力すると、標準出力(画面)には何も表示されなくなってしまいます。
ここでは、teeコマンドを使用して、標準出力とファイルの両方にコマンドの実行結果を出力させる方法を説明します。
teeコマンドの使い方
早速、コマンドの実行結果を標準出力とファイルに出力する方法を見ていきたいと思います。
teeコマンドの書式は以下になります。
パイプでコマンドと繋げるだけでOKです。
コマンド | tee 出力ファイル名
では、実際に teeコマンドを使用してみたいと思います。
「pwd」コマンドと組み合わせて実行してみます。
コマンドの標準出力が表示されました。
[root@localhost workspace]# pwd | tee ./pwd.txt /home/workspace
次にファイルに出力されているか確認してみます。
標準出力と同じ内容がファイルにも出力されていることが確認出来ました。
[root@localhost workspace]# cat pwd.txt /home/workspace
このように「tee」コマンドを使用することで、簡単にコマンドの実行結果を標準出力(画面)とファイルの両方に出力させることが可能です。
オプション
teeコマンドのオプションについて説明します。
一覧
オプション | 説明 |
---|---|
-a | 指定されたファイルに追記する |
-i | 割り込みシグナルを無視する |
-- help | teeコマンドのオプションを表示する |
-- version | teeコマンドのバージョン情報を表示する |
-a オプションについて
「-a」オプションを使用することで、コマンドの実行結果をファイルに追記することが可能です。
下記は、実際にコマンドを実行した結果です。
「pwd」コマンドの実行結果が追記されたことが分かります。
[root@localhost workspace]# pwd | tee -a ./pwd.txt /home/workspace [root@localhost workspace]# cat pwd.txt /home/workspace /home/workspace
エラーをファイルに出力させる
teeコマンドは、標準出力のみをファイルに出力させる機能です。
なので、コマンドの実行結果がエラーの場合は、ファイルには出力されません。
ここでは、コマンドの実行結果がエラーの場合でも、ファイルに出力させる方法を解説します。
方法は簡単で「2>&1」を使用し、コマンド実行結果の標準エラー出力を標準出力に変更します。
実際に使用例を見てみましょう。
以下の通り、「ls」コマンドのエラー内容が、ファイルに出力されたことが確認出来ました。
[root@localhost workspace]# ls -l abc 2>&1 | tee ls.txt ls: 'abc' にアクセスできません: そのようなファイルやディレクトリはありません [root@localhost workspace]# cat ls.txt ls: 'abc' にアクセスできません: そのようなファイルやディレクトリはありません
実行結果を複数ファイルに出力する
teeコマンドで、コマンドの実行結果を複数のファイルに出力する書式です。
teeコマンドの後ろに、半角スペース区切りで出力ファイル名を記述します。
コマンド | tee 出力ファイル名1 出力ファイル名2 出力ファイル名3
以下が使用例です。
「pwd」の実行結果が、3つのファイルに出力され、標準出力とファイルに出力された内容が一致していることが確認出来ました。
[root@localhost workspace]# pwd | tee ./pwd_1.txt ./pwd_2.txt ./pwd_3.txt /home/workspace [root@localhost workspace]# cat ./pwd_1.txt /home/workspace [root@localhost workspace]# cat ./pwd_2.txt /home/workspace [root@localhost workspace]# cat ./pwd_3.txt /home/workspace
コメント