cat コマンドは、ファイルの内容を標準出力(画面)に表示するLinux/Unixの基本コマンドです。名前は concatenate(連結する)の略で、1つのファイルを表示するだけでなく、複数ファイルを結合して表示したり、新しいファイルを作成したりする用途にも使われます。
この記事では、cat コマンドの構文・主要オプション・実行例に加えて、less や head との使い分け、Windows環境での代替コマンドまでまとめて解説します。
catコマンドとは
cat は GNU coreutils に含まれる標準コマンドで、次のような場面でよく使われます。
- ログファイルや設定ファイルの中身を素早く確認する
- 複数のファイルを1つに結合する
- リダイレクトと組み合わせて新しいファイルを作成する
- パイプと組み合わせて他のコマンドへ入力を渡す
構文(Syntax)
cat [オプション] [FILE...]
FILEを省略、または - を指定すると標準入力から読み込みます。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-n | 行番号を付けて表示 | cat -n test.txt |
-b | 空行を除いて行番号を付ける | cat -b test.txt |
-s | 連続する空行を1行にまとめる | cat -s test.txt |
-E | 行末に $ を表示 | cat -E test.txt |
-T | タブ文字を ^I として表示 | cat -T test.txt |
-A | 非表示文字もすべて可視化(-vET と同じ) | cat -A test.txt |
実行例
ファイル内容を表示
cat test.txt
出力例:
Hello
World
行番号を付けて表示
cat -n test.txt
出力例:
1 Hello
2 World
空行を除いて行番号を付ける
cat -b blank.txt
出力例(blank.txt の中身が a / 空行 / b の場合、空行には番号が付かない):
1 a
2 b
複数ファイルを結合して表示
cat file1.txt file2.txt
出力例:
Line A
Line B
Line C
Line D
複数ファイルを結合して新しいファイルに保存
結合結果を画面に表示するだけでなく、リダイレクト(>)で新しいファイルに保存できます。
cat file1.txt file2.txt > combined.txt
既存のファイルにさらに追記したい場合は >>(追記リダイレクト)を使います。> は上書き、>> は追記という違いに注意してください。
cat file1.txt >> combined.txt
新しいファイルを作成(リダイレクトを使用)
cat > newfile.txt
これは新しいファイルです
Ctrl+D
(入力終了後、newfile.txt に保存されます)
パイプで他のコマンドと組み合わせる
cat は標準入力をそのまま出力するため、パイプの動作確認や他コマンドの出力の受け皿としてもよく使われます。
echo "Hello World" | cat
head -n 10 access.log | cat -n
権限不足でエラーになる例
cat /etc/shadow
出力例:
cat: /etc/shadow: Permission denied
catとless・head・tailの違い
cat はファイル全体を一度に出力するため、大きなファイルを開くと大量の行が流れてしまい、内容を追いづらくなります。用途に応じて次のコマンドと使い分けます。
| コマンド | 用途 | 特徴 |
|---|---|---|
cat | ファイル全体を一括表示・結合 | スクロール不可。小さいファイル向け |
less | ページ単位で閲覧 | スクロール・検索が可能。大きいファイル向け |
| more | ページ単位で閲覧(旧式) | 前方スクロールのみ |
head | ファイルの先頭を表示 | 既定は先頭10行 |
tail | ファイルの末尾を表示 | -f でログのリアルタイム監視も可能 |
tac | cat の逆で行を逆順に表示 | 名前の通り cat の綴りを逆にしたコマンド |
目安として、ターミナルの画面に収まらない・スクロールして読みたいファイルは less、先頭や末尾だけ確認したい場合は head / tail を使うとよいでしょう。
よくある質問(FAQ)
catの語源は?
concatenate(連結する)の略です。もともと複数ファイルを1つに連結する用途で作られたコマンドで、単一ファイルの表示はその副次的な使い方にあたります。
catとlessの違いは?
cat はファイル内容を一括で出力するのに対し、less はページ単位でスクロール・検索しながら閲覧できます。行数が多いファイルは less の方が扱いやすいです。
大きなファイルをcatすると画面が乱れる・固まるのはなぜ?
行数が多いファイルを cat すると全行が一気に出力され、スクロールが追いつかなくなります。また、バイナリファイルを誤って cat すると制御文字により端末表示が乱れることがあります。その場合は端末を閉じて開き直すか、reset コマンドで表示を復元してください。大きいファイルは less や head の利用をおすすめします。
WindowsでLinuxのcatコマンドは使えますか?
Git Bash や WSL(Windows Subsystem for Linux)では cat コマンドがそのまま使えます。コマンドプロンプト(cmd.exe)には cat は存在せず、同等の操作は type コマンドで行います。PowerShellでは Get-Content(エイリアス cat/gc)が同様の役割を果たします。
# コマンドプロンプト(cmd.exe)
type test.txt
# PowerShell
Get-Content test.txt
ファイルを結合する以外の使い道はありますか?
はい。標準入力の内容をそのまま出力する性質を利用して、パイプラインの動作確認(echo "test" | cat)や、他コマンドの出力を整形せずそのまま次の処理に渡す用途にも使われます。
注意点
catは GNU coreutils に含まれます。BSD系(macOSなど)でも同様に利用できますが、細かいオプションの違いがあります。- 権限のないファイルは
sudoが必要です。 - リダイレクト(
>)は既存ファイルを無条件に上書きします。誤って重要なファイルを上書きしないよう、書き込み先のファイル名は慎重に確認してください。 catで内容を表示する代わりに、/etc/groupや/etc/passwdのようなシステム設定ファイルは専用コマンド(例:getent)で参照することも推奨されます。
関連コマンド
less: ファイル内容をスクロールしながら閲覧できるmore: ページ単位でファイルを表示できるhead: ファイルの先頭を表示するtail: ファイルの末尾を表示するtac:catの逆で、ファイルを逆順に表示する
参考
- manページ: https://man7.org/linux/man-pages/man1/cat.1.html
- GNU coreutils: https://www.gnu.org/software/coreutils/

コメント