はじめに

こんにちは!今回はcatコマンドについて解説します。

catはファイルの内容を表示するコマンドで、Linuxを使う上で絶対に覚えておきたい基本コマンドの一つです。名前の由来は「concatenate(連結する)」なんですけど、普段は単にファイルを見るのに使うことが多いですね。

catコマンドとは

catは、ファイルの内容を標準出力(画面)に表示したり、複数のファイルを連結したりするコマンドです。

テキストファイルの中身をサクッと確認したい時とか、複数のファイルを一つにまとめたい時に使います。めちゃくちゃシンプルだけど、使用頻度は超高いです。

基本構文

1
cat [オプション] [ファイル名...]

主なオプション

オプション 説明
-n すべての行に行番号を表示
-b 空行以外に行番号を表示
-s 連続する空行を1行にまとめる
-E 各行の終わりに$を表示
-T タブを^Iとして表示
-A -vETと同じ(すべての特殊文字を表示)
-v 非表示文字を可視化

使用例

例1: ファイルの内容を表示

1
cat sample.txt

実行結果:

1
2
Hello, World!
This is a sample file.

これが一番基本的な使い方です。ファイルの中身が画面に表示されます。

例2: 複数ファイルを表示

1
cat file1.txt file2.txt

実行結果:

1
2
file1の内容
file2の内容

複数ファイルを指定すると、順番に連結して表示されます。

例3: 行番号付きで表示

1
cat -n sample.txt

実行結果:

1
2
3
4
     1	Hello, World!
     2	This is a sample file.
     3
     4	End of file.

-nオプションで全ての行に番号が付きます。空行にも番号が付くのがポイント。

例4: 空行以外に行番号を表示

1
cat -b sample.txt

実行結果:

1
2
3
4
     1	Hello, World!
     2	This is a sample file.

     3	End of file.

-bオプションだと空行には番号が付きません。こっちの方が見やすいことも多いです。

例5: ファイルを新規作成

1
cat > newfile.txt

これを実行すると入力待ちになるので、好きな文字を入力します。 Ctrl + Dで保存して終了できます。

1
2
3
こんにちは
これは新しいファイルです
[Ctrl + D を押す]

簡単なファイルを作る時に便利です。

例6: ファイルに追記

1
cat >> existing.txt

>>を使うと既存のファイルに追記できます。 こちらもCtrl + Dで保存です。

例7: 複数ファイルを連結して保存

1
cat file1.txt file2.txt > combined.txt

複数のファイルを一つにまとめて新しいファイルに保存できます。 ログファイルをまとめたい時とかに使えますね。

例8: 行末を可視化

1
cat -E sample.txt

実行結果:

1
2
3
4
Hello, World!$
This is a sample file.$
$
End of file.$

-Eオプションで行末に$が表示されます。 改行コードとか、行末の空白をチェックしたい時に便利です。

例9: タブを可視化

1
cat -T sample.txt

実行結果:

1
2
Name:^IAge
Taro^I25

-Tオプションでタブが^Iとして表示されます。 スペースとタブの区別がつかない時に使います。

例10: パイプと組み合わせ

1
cat /var/log/syslog | grep error

他のコマンドと組み合わせて使うこともよくあります。 この例だと、ログファイルから"error"を含む行だけを表示します。

Tips・注意点

  • 大きいファイルには注意: catは全内容を一気に表示するので、巨大なファイルだと画面がスクロールしまくります。そういう時はlessmoreを使いましょう

    1
    
    less bigfile.txt  # こっちの方がいい
    
  • 標準入力から読み込む: ファイル名を指定しないと、標準入力から読み込みます

    1
    2
    
    echo "test" | cat
    # 出力: test
    
  • ハイフンでファイル名と標準入力を混在: -を使うと標準入力を表す

    1
    2
    
    cat file1.txt - file2.txt
    # file1の内容、標準入力、file2の内容の順で表示
    
  • バイナリファイルは表示しない: バイナリファイルにcatを使うと、ターミナルの表示が壊れることがあります。もし誤って実行しちゃったらresetコマンドで直せます

  • リダイレクトの注意: 同じファイルを読んで書き込むと中身が消えます

    1
    
    cat file.txt > file.txt  # これはダメ!ファイルが空になる
    

実践的な使い方

ログファイルの確認

1
cat /var/log/syslog | tail -n 20

ログの最後の20行だけを見たい時とか。

設定ファイルの確認

1
cat ~/.bashrc

bashの設定ファイルをサクッと確認。

ヒアドキュメントでファイル作成

1
2
3
4
5
cat > config.txt << EOF
server=localhost
port=8080
debug=true
EOF

複数行のファイルを一気に作成できます。スクリプトでよく使う技です。

複数ログの結合

1
cat access.log.1 access.log.2 access.log.3 > all_access.log

分割されたログファイルを一つにまとめる時に便利。

行番号付きでコードレビュー

1
cat -n script.sh

コードの特定の行について話す時、行番号があると便利です。

まとめ

今回はcatコマンドについて解説しました。

ポイント:

  • catはファイルの内容を表示する基本コマンド
  • 複数ファイルを連結できる(名前の由来!)
  • -nで行番号、-Eで行末を可視化
  • リダイレクトと組み合わせてファイル作成・連結が可能
  • 大きいファイルにはlessmoreの方が適している

シンプルだけど、めちゃくちゃ使うコマンドです。ファイルの中身をちょっと見たい時は、とりあえずcatって感じですね。

lessheadtailなんかと使い分けられるようになると、より効率的に作業できますよ。

次回もLinuxコマンドの学習を続けていきましょう!