Linuxにおける'cat'および'tac'コマンドの使用方法と例
この記事は私たちのLinuxのトリックとヒントシリーズの一部です。この中で、基本的なcatコマンドの使い方(Linuxで最も頻繁に使用されるコマンド)とtac(catコマンドの逆、ファイルを逆順に印刷する)をいくつかの実践的な例とともに取り上げます。
関連記事: Linuxにおける13の便利な「cat」コマンドの例
Linuxにおけるcatコマンドの基本的な使い方
catコマンドは、Concatenateの略で、*nixシステムで最もよく使用されるコマンドの1つです。このコマンドの最も基本的な使用法は、ファイルを読み込み、stdoutに表示することで、つまり端末にファイルの内容を表示するということです。
# cat file.txt
catコマンドの別の使い方は、複数のファイルを読み込んだり、結合したりして、その出力をモニターに送信することであり、以下の例に示されています。
# cat file1.txt file2.txt file3.txt
このコマンドは、“> ” Linux のリダイレクションオペレーターを使用して、複数のファイルを1つのファイルに連結(結合)するためにも使用できます。
# cat file1.txt file2.txt file3.txt > file-all.txt
追加リダイレクタを使用することにより、新しいファイルの内容を以下の構文で file-all.txt の最後に追加できます。
# cat file4.txt >> file-all.txt
catコマンドは、ファイルの内容を新しいファイルにコピーするために使用できます。新しいファイルは任意に名前を変更できます。たとえば、現在の場所から/tmp/ディレクトリにファイルをコピーします。
# cat file1.txt > /tmp/file1.txt
現在の場所から/tmp/ディレクトリにファイルをコピーして、その名前を変更してください。
# cat file1.txt > /tmp/newfile.cfg
cat コマンドの使用を減らすもう一つの方法は、以下の構文を使って新しいファイルを作成することです。ファイルの編集が終わったら、CTRL+D を押して新しいファイルを保存して終了します。
# cat > new_file.txt
ファイルのすべての出力行に番号を付けるために、空行を含めて、-nスイッチを使用してください。
# cat -n file-all.txt
空でない各行の番号のみを表示するには、-b スイッチを使用します。
# cat -b file-all.txt
Linuxのcatコマンドについてもっと知りたいですか?それなら、Linuxの役立つ「cat」コマンドの13の例に関する記事を読んでください。
LinuxでTacコマンドの使い方を学ぶ
一方、*nixシステムであまり知られておらず、あまり使用されていないコマンドはtacコマンドです。Tacは実質的にcatコマンドの逆バージョン(逆さにスペルされたものでもあります)で、ファイルの最下行から始まり最上行で終わる各行を機械の標準出力に印刷します。
# tac file-all.txt
コマンドの最も重要なオプションの一つは、ファイルの内容を文字列またはファイルのキーワードに基づいて分ける -s スイッチによって表されます。
# tac file-all.txt --separator "two"
次に、tacコマンドの最も重要な使用方法は、ログの内容の時系列を逆にすることによって、ログファイルのデバッグに大いに役立つことです。
$ tac /var/log/auth.log
Or to display the last lines
tail /var/log/auth.log | tac
サンプル出力
tecmint@tecmint ~ $ tac /var/log/auth.log
pr 6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr 6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
....
tecmint@tecmint ~ $ tail /var/log/auth.log | tac
Apr 6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr 6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr 6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
Apr 6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 6 15:55:02 tecmint CRON[17194]: pam_unix(cron:session): session closed for user root
Apr 6 15:55:01 tecmint CRON[17195]: pam_unix(cron:session): session closed for user root
...
catコマンドと同様に、tacはテキストファイルの操作に優れていますが、他の種類のファイル、特にバイナリファイルや最初の行がそれを実行するプログラムを示すファイルでは避けるべきです。










