Linux Teeコマンドはコマンドラインツールであり、標準入力から読み取り、結果を標準出力とファイルに同時に書き込みます。つまり、Linuxのteeコマンドは、1つの石で2羽の鳥を打つために使用されます。標準入力からの読み取りと結果のファイルへの出力、および標準出力への出力を同時に行います。これはどういう意味ですか?このガイドでは、Linux teeコマンドについて詳しく説明し、いくつかの例を使用してその使用法を示します。
Teeコマンド構文
teeコマンドの構文は非常に単純で、次の形式を取ります。
$teeOPTIONSファイル名
teeコマンドで使用できるオプションの一部を次に示します。
teeコマンドの構文では、filenameは1つ以上のファイルを指します。
そのことを念頭に置いて、コマンドの使用方法に関するいくつかの例を確認しましょう。
例1)teeコマンドの基本的な使用法
前述のように、teeコマンドの主な機能は、コマンドの出力(stdout)を表示し、ファイルに保存することです。以下の例では、システム内のブロックデバイスを検査し、結果をteeコマンドにパイプ処理します。このコマンドは、出力を端末に表示すると同時に、block_devices.txtという名前の新しいファイルに保存します。
$ lsblk | tee block_devices.txt
次のように、catコマンドを使用してblock_devices.txtファイルの内容を自由に調べてください。
$ cat block_devices.txt
例2)teeを使用してコマンド出力を複数のファイルに保存する
さらに、以下の構文に示すように、コマンドの出力をいくつかのスペースで区切られたファイルに書き込むことができます。
$コマンド| tee file1file2file3。 。 。
次の例では、hostnamectlコマンドを呼び出して、システムのホスト名を詳細に出力し、標準出力を2つのファイルfile1.txtとfile2.txtに保存しています
$ hostnamectl | tee file1.txt file2.txt
ここでも、次のようにcatコマンドを使用して、2つのファイルに出力が存在することを確認できます。
$ cat file1.txt $ cat file2.txt
例3)teeコマンドの出力を抑制する
teeコマンドによる出力の画面への出力を非表示または抑制したい場合は、次のように出力を/ dev/nullにリダイレクトします。
$コマンド|ティーファイル>/dev / null
たとえば、
$ df -Th | tee file4.txt > /dev/null
例4)teeコマンドでファイルに出力を追加
デフォルトでは、teeコマンドはファイルの内容を上書きします。出力を追加し、現在のコンテンツが消去されないようにするには、-aまたは–appendオプションを使用します。
$コマンド| tee-ファイル
2番目のコマンドでは、示されているように、dateコマンドの出力をfile1.txtに追加しました。これには、システム上のUSBデバイスに関する情報がすでに含まれています。
$ date | tee -a file1.txt
例5)teeをsudoコマンドと一緒に使用する
sudoユーザーとして、rootユーザーが所有するファイルに書き込みたいとします。当然、昇格された操作では、コマンドの前にsudoユーザーを呼び出す必要があります。
これを実現するには、以下に示すように、teeコマンドの前にsudoを付けるだけです。
$ echo "10.200.50.20 db-01" | sudo tee -a /etc/hosts/
したがって、teeは左側のechoコマンドの出力を受け取り、sudoコマンドを使用してこれを昇格させ、最終的に出力をファイルに追加します。
例6)teeコマンドを使用して1つのコマンドの出力を別のコマンドにリダイレクトする
teeコマンドを使用すると、あるコマンドの出力を別のコマンドに簡単にリダイレクトできます。ここで、最初のコマンドの出力は2番目のコマンドの入力として機能します。例を以下に示します:
$ grep 'root' /etc/passwd | tee /tmp/passwd.tmp | wc -l 2 $ cat /tmp/passwd.tmp root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin $
例7)teeコマンドを使用してviエディター内のファイルに変更を保存する
root以外のユーザーとして作業していて、rootが所有するファイルに変更を加えていて、sudoをコマンドの前に置くのを忘れて、変更を保存したいとします。例を以下に示します。
$ vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.60 mail.linuxtechi.com 192.168.1.50 ns.linuxtechi.com 192.168.1.40 pxe.linuxtechi.com
ファイルへの変更を保存している間、読み取り専用のメッセージが表示されます
ここで、viエディター内の/ etc / hostsファイルへの変更を保存するには、
を実行します。:w!sudo tee%
ユーザーのパスワードを入力するように求められます。ユーザーがsudo権限を持っている場合は、変更が保存されます。
例8)teeコマンド使用中の割り込み信号を無視する
teeコマンドで「-i」オプションを使用すると、割り込み信号(CTRL-C)を無視できます。例を以下に示します。
$ ping -c 5 linuxtechi.com | tee -i /tmp/pingtest.tmp
例9)シェルスクリプトでのteeコマンドの使用法
Teeコマンドはシェルスクリプトでも頻繁に使用されます。一般的な例の1つを以下に示します。
$ vi basic-script.sh #!/bin/bash LOGFILE=/tmp/basic-logs-$(date +%d%m%Y) FLAVOR=$(cat /etc/*-release | grep -w 'NAME=' | cut -d"=" -f2 | awk '{print $1}'| sed 's/"//g') if [ $FLAVOR == CentOS ]; then dmesg | grep -i 'error' | tee -a $LOGFILE grep -i 'installed' /var/log/dnf.log | tee -a $LOGFILE else echo 'do nothing' fi
上記のLinuxシェルスクリプトでわかるように、OSがCentOSの場合にのみ、teeコマンドを使用して2つのコマンドの出力をログファイルに追加しています。
結論
これで今日のトピックは終わりです。お気軽にご意見をお寄せください。フィードバックをお待ちしております。このガイドでは、Linuxteeコマンドについて説明しました。