ウェブサイト検索

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はテキストファイルの操作に優れていますが、他の種類のファイル、特にバイナリファイルや最初の行がそれを実行するプログラムを示すファイルでは避けるべきです。

関連記事: