Linux
 Computer >> コンピューター >  >> システム >> Linux

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

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

Linuxシェルでパイプとリダイレクトを使用したことがある場合は、teeを使用する必要がある場合もあります。 ユーティリティ。

ティーは何をしますか?

などのコマンド
ls

現在のディレクトリの内容が表示されます。つまり、これらのコンテンツをstdout(標準出力)(通常は画面)、より正確には仮想端末ディスプレイに表示します。

のようなコマンド
ls > file123

画面には何も表示されません。 > signは、すべての出力をstdoutに表示するのではなく、ファイルにリダイレクトします。 file123には、以前に画面に表示されていたコンテンツが入力されます。

ディレクトリの内容を画面に表示してファイルに書き込むには、2つのコマンドを使用します。 teeを使用 これらの両方を同時に行うことができます。

ls | tee file123

同様のコマンドを2回実行できるのに、なぜTeeを使用するのですか?

上記の例では、lsを実行できる場合は、明らかにteeは必要ありません。 通常どおりに実行してから、出力をファイルにリダイレクトします。ただし、出力が一意になる状況が発生します。問題を診断しようとするシナリオを想像してみてください。 diagnose | tee error.log 。発生するエラーは固有のものである可能性があります。物事をテストするときに何が起こっているかを確認できるように、それらを画面に表示する必要があります。ただし、これらのエラーをファイルに保存して、後で確認したり、出力をディスカッションフォーラムに貼り付けて、他の人に質問したりすることもできます。

teeが必要になる可能性がある場合によく発生する別の状況は、次のとおりです。rootユーザーのみが読み取りまたは書き込みできる場所にコマンドの出力を書き込みたい場合。これは機能しません。

/sbin/blkid > /root/somefile

そうすると、「もちろん、sudoを使用するだけです!」と思うかもしれません。そして、これも機能しないことに驚かれることでしょう:

sudo blkid > /root/somefile

これは、sudo blkidの後 実行しても、通常の非rootユーザーとしてログインしたままです。そして、シェル(通常はbash)は、/root/somefileに書き込もうとします 通常のユーザー資格情報を使用します。これを解決するには、teeを使用できます:

/sbin/blkid | sudo tee /root/somefile

テキストの追加とエラーのリダイレクト

teeは便利ですが、単純なコマンドです。基本的なcommand | tee somefile ほとんどの場合で十分です。ただし、これらのヒントが必要になる可能性のある2つのシナリオがあります。

最初に知っておくべきことは、teeはデフォルトで常にファイルを上書きするということです。実行した場合

ls | tee somefile

そして

ls /tmp | tee somefile

2番目のコマンドはsomefileの内容を上書きし、最後に実行されたコマンドの内容のみが表示されます。この動作を変更するには、上書きする代わりにteeにテキストを追加さ​​せることができます。これを行うには、-aを使用します コマンドスイッチ。

ls | tee -a somefile

次に知っておくべきことは、すべての出力が同じではないということです。エラーメッセージは別の方法で処理され、画面に表示されますが、標準とは見なされないため、ティーに捕らえられることはありません。 (それらはstderrと見なされます。)これがgrepの例です。

grep -r L2TP /etc | tee somefile

次のような画像が表示されます。

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

許可が拒否されたメッセージはstderrに書き込まれます。 stdoutに書き込まれるのは、強調表示されたテキストだけです。そのため、「somefile」の内容が下の画像に示されていることに気付くでしょう。

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

この場合、grepを使用してテキストを検索する場合、エラーメッセージがファイルにリダイレクトされないようにすると便利です。彼らはただファイルを不必要なゴミで満たすでしょう。見つかった結果のみを表示します。ただし、エラーメッセージが必要な場合は、2>&1を使用してください 、stderrをstdoutにリダイレクトします。

grep -r L2TP /etc 2>&1 | tee somefile

このコマンドを使用すると、somefileにエラーメッセージも含まれるようになります。

結論

うまくいけば、このチュートリアルは、teeコマンドを最大限に活用するために必要なすべてをカバーしています。ただし、ティーで行き詰まる状況に遭遇した場合は、下にコメントを残してください。サポートできる可能性があります。


  1. Linuxでssコマンドを使用してネットワーク接続を監視する方法

    Linuxを使用している場合は、ネットワークについてもっと知る必要がある時期が来るでしょう。これを行うのに役立つツールがいくつかあり、一部のツールは他のツールよりも複雑です。 ss コマンドは多くのマシンにインストールされていると信頼できるものなので、知っておくと便利です。 ssコマンドとは何ですか? 2文字のコマンドの名前は難解に見えるかもしれませんが、実際には非常に単純です。多くのLinux/Unixコマンドと同様に、名前はコマンドの機能の省略形です。ここで、ssはSocketStatisticsの略です。 Socket Statisticsは、古いnetstatに代わるものです。

  2. Linuxでwatchコマンドを使用する方法と例

    Linuxのwatchコマンドは1つのことを行います。コマンドを繰り返し、結果を繰り返し出力して、変更を監視できるようにします。使用方法は次のとおりです。 watchコマンド構文 watchコマンドの構文は次のとおりです。 watch OPTIONS COMMAND 注: オプション 以下の表のオプションのリストである必要があります。これにより、ウォッチのデフォルトの動作が変更されます。 コマンド コマンド 監視するコマンドです 繰り返し実行する必要があります。これは、出力を監視します 見る 中断されるまで実行されます(したがって、 CTRL+Cを押して終了します ) オプション 時