Linux の cat コマンド は、指定したファイルの内容を標準出力にそのまま表示するための基本コマンドです。
1 つのファイルを表示するだけでなく、複数ファイルを連結して表示したり、リダイレクトと組み合わせて別ファイルに書き出したりもできます。
ただし、ファイルサイズが大きい場合は、一度に大量の出力が行われるため、
ログファイルなどをじっくり読むときは less コマンド や head コマンド・tail コマンド と併用するほうが実務では安全です。
cat [オプション]... [ファイル]...
複数のファイルを指定すると、順番に連結して表示されます。
標準入力(パイプ)を受け取って、そのまま出力するフィルタとして使うこともできます。
・hoge ファイルの中身を標準出力する。
cat hoge
最も基本的な使い方です。設定ファイルやテキストファイルの中身をサッと確認したいときに使います。
ただし、サイズが大きいファイルでは一気に出力されるので注意してください。
・複数ファイル(file1 と file2)を順に表示する。
cat file1.txt file2.txt
指定した順番にファイルを連結して表示します。
分割されたログファイルを一続きとして確認したいときなどに使えます。
・hoge ファイルの中身を空行を除いて行番号付きで表示する。
cat -b hoge
-b オプションは、空行を除いた行にだけ行番号を付けるオプションです。
行番号を見ながらファイルを確認したいが、空行には番号を振りたくないときに便利です。
・すべての行に行番号を付けて表示する。
cat -n hoge
-n オプションは、空行も含めてすべての行に行番号を付けるオプションです。
レビュー時などで「○行目に〜」と指摘したいときにそのまま使えます。
・連続した空行をまとめて表示し、読みやすくする。
cat -s hoge
-s オプションは、連続した空行を 1 行にまとめて表示します。
空行が多くて読みづらいログや設定ファイルを、少しスッキリさせて確認したいときに便利です。
・非表示文字や行末を可視化して表示する。
cat -A hoge
-A オプションは、制御文字や行末、TAB などを記号で表示するモードです。
どこに改行や TAB が入っているかを正確に確認したいときに役立ちます。
・ファイルの内容を別ファイルにコピーする(上書き)。
cat file1.txt > file2.txt
> を使うと、file1.txt の内容を file2.txt に書き出します(既存の file2.txt は上書きされます)。
単純に中身をコピーしたい場合の簡単な方法です。
・ログを追記する(既存ファイルの末尾に追加)。
cat error.log >> all.log
>> を使うと、error.log の内容を all.log の末尾に追記できます。
バラバラなログを 1 つのファイルにまとめたいときに便利です。
・cat の出力を less に渡してページ送りで表示する。
cat largefile.txt | less
大きなファイルをそのまま cat すると流れてしまうため、less コマンド と組み合わせて
ページ送りしながら内容を確認するパターンもよく使われます。(実務では less largefile.txt と直接 less を使うほうが一般的です)
・設定ファイルやテキストの中身を素早く確認する
/etc/passwd や /etc/group といった設定ファイルを、cat でサッと表示して内容を確認するケースはよくあります。
編集は vi などのエディタで行うとして、閲覧は cat で十分という場面も多いです。
・分割されたログファイルをまとめて確認する
ローテーション済みのログ(例:access.log.1 と access.log.2)を、
cat で連結してから grep や awk に渡して分析する、という流れも実務でよく登場します。
・簡単なファイルコピーや追記
cp を使わず、cat file1 > file2 のようにして中身だけコピーする場合や、
複数のログを 1 ファイルにまとめるときに cat >> を使うケースもあります。
・less / head / tail との使い分け
「とりあえず全部見たい」なら cat、「先頭だけ」「末尾だけ」「スクロールしながら」なら
head・tail・less といったコマンドを使い分けると、ログ調査がかなり快適になります。
| short option | long option | description |
|---|---|---|
| -A | --show-all | vET と同じ(非表示文字を ^ 記号で表示し、行末を $、TAB 文字を ^I で表示する) |
| -b | --number-nonblank | 空行を除いて行番号を付け加える(-n より優先される) |
| -e | -vE と同じ(非表示文字を ^ 記号で表示し、行末を $ で表示する) | |
| -E | --show-ends | 各行の末尾に $ を付け加えて表示する |
| -n | --number | 全ての行に行番号を付け加える |
| -s | --squeeze-blank | 連続した空行の出力を 1 行にまとめて表示する |
| -t | -vT と同じ(非表示文字を ^ 記号で表示し、TAB 文字を ^I で表示する) | |
| -T | --show-tabs | TAB 文字を ^I で表示する |
| -v | --show-nonprinting | 制御文字などの非表示文字を ^ 記号付きで表示する(改行と TAB は対象外) |
| --help | cat コマンドの使い方(ヘルプ)を表示して終了する | |
| --version | cat コマンドのバージョン情報を表示して終了する |
より詳細なオプションや挙動については、Linux の
cat(1) マニュアルページ(英語)
もあわせて参照してください。
また、長いログをページ送りで確認したい場合は less コマンド、
特定の文字列だけ絞り込みたい場合は grep コマンド のページも参考になると思います。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
