はじめに
こんにちは!今回はcatコマンドについて解説します。
catはファイルの内容を表示するコマンドで、Linuxを使う上で絶対に覚えておきたい基本コマンドの一つです。名前の由来は「concatenate(連結する)」なんですけど、普段は単にファイルを見るのに使うことが多いですね。
catコマンドとは
catは、ファイルの内容を標準出力(画面)に表示したり、複数のファイルを連結したりするコマンドです。
テキストファイルの中身をサクッと確認したい時とか、複数のファイルを一つにまとめたい時に使います。めちゃくちゃシンプルだけど、使用頻度は超高いです。
基本構文
|
|
主なオプション
| オプション | 説明 |
|---|---|
-n |
すべての行に行番号を表示 |
-b |
空行以外に行番号を表示 |
-s |
連続する空行を1行にまとめる |
-E |
各行の終わりに$を表示 |
-T |
タブを^Iとして表示 |
-A |
-vETと同じ(すべての特殊文字を表示) |
-v |
非表示文字を可視化 |
使用例
例1: ファイルの内容を表示
|
|
実行結果:
|
|
これが一番基本的な使い方です。ファイルの中身が画面に表示されます。
例2: 複数ファイルを表示
|
|
実行結果:
|
|
複数ファイルを指定すると、順番に連結して表示されます。
例3: 行番号付きで表示
|
|
実行結果:
|
|
-nオプションで全ての行に番号が付きます。空行にも番号が付くのがポイント。
例4: 空行以外に行番号を表示
|
|
実行結果:
|
|
-bオプションだと空行には番号が付きません。こっちの方が見やすいことも多いです。
例5: ファイルを新規作成
|
|
これを実行すると入力待ちになるので、好きな文字を入力します。
Ctrl + Dで保存して終了できます。
|
|
簡単なファイルを作る時に便利です。
例6: ファイルに追記
|
|
>>を使うと既存のファイルに追記できます。
こちらもCtrl + Dで保存です。
例7: 複数ファイルを連結して保存
|
|
複数のファイルを一つにまとめて新しいファイルに保存できます。 ログファイルをまとめたい時とかに使えますね。
例8: 行末を可視化
|
|
実行結果:
|
|
-Eオプションで行末に$が表示されます。
改行コードとか、行末の空白をチェックしたい時に便利です。
例9: タブを可視化
|
|
実行結果:
|
|
-Tオプションでタブが^Iとして表示されます。
スペースとタブの区別がつかない時に使います。
例10: パイプと組み合わせ
|
|
他のコマンドと組み合わせて使うこともよくあります。 この例だと、ログファイルから"error"を含む行だけを表示します。
Tips・注意点
-
大きいファイルには注意:
catは全内容を一気に表示するので、巨大なファイルだと画面がスクロールしまくります。そういう時はlessやmoreを使いましょう1less bigfile.txt # こっちの方がいい -
標準入力から読み込む: ファイル名を指定しないと、標準入力から読み込みます
1 2echo "test" | cat # 出力: test -
ハイフンでファイル名と標準入力を混在:
-を使うと標準入力を表す1 2cat file1.txt - file2.txt # file1の内容、標準入力、file2の内容の順で表示 -
バイナリファイルは表示しない: バイナリファイルに
catを使うと、ターミナルの表示が壊れることがあります。もし誤って実行しちゃったらresetコマンドで直せます -
リダイレクトの注意: 同じファイルを読んで書き込むと中身が消えます
1cat file.txt > file.txt # これはダメ!ファイルが空になる
実践的な使い方
ログファイルの確認
|
|
ログの最後の20行だけを見たい時とか。
設定ファイルの確認
|
|
bashの設定ファイルをサクッと確認。
ヒアドキュメントでファイル作成
|
|
複数行のファイルを一気に作成できます。スクリプトでよく使う技です。
複数ログの結合
|
|
分割されたログファイルを一つにまとめる時に便利。
行番号付きでコードレビュー
|
|
コードの特定の行について話す時、行番号があると便利です。
まとめ
今回はcatコマンドについて解説しました。
ポイント:
catはファイルの内容を表示する基本コマンド- 複数ファイルを連結できる(名前の由来!)
-nで行番号、-Eで行末を可視化- リダイレクトと組み合わせてファイル作成・連結が可能
- 大きいファイルには
lessやmoreの方が適している
シンプルだけど、めちゃくちゃ使うコマンドです。ファイルの中身をちょっと見たい時は、とりあえずcatって感じですね。
lessやhead、tailなんかと使い分けられるようになると、より効率的に作業できますよ。
次回もLinuxコマンドの学習を続けていきましょう!