【Linux】cat・less・head・tailでファイルの中身を確認する

Linux

こんにちは、かつコーチです。

前回は、cpmvrmを使ったファイル操作の注意点を解説しました。

今回は、ファイルの中身を確認するための4つのコマンド、catlessheadtailを解説します。

設定ファイルの確認やログの調査など、サーバー運用では「ファイルの中身を見る」という作業が非常に多く発生します。

この記事を読めば、ファイルのサイズや用途に応じて最適なコマンドを選べるようになります。

ファイルの中身を確認する基本コマンド

cat:ファイル全体を一気に表示する

cat(Concatenate)は、ファイルの中身をすべてそのまま画面に表示するコマンドです。

# ファイルの中身を全て表示する
cat /etc/hostname
ubuntu-server

短い設定ファイルなど、内容が数行〜数十行程度のファイルを確認する際に向いています。

複数のファイルを指定すると、それらを連結して表示することもできます。

# 複数のファイルをまとめて表示する
cat file1.txt file2.txt

less:長いファイルをスクロールしながら確認する

lessは、ファイルの中身を1画面ずつ表示し、スクロールしながら閲覧できるコマンドです。

# ログファイルをlessで開く
less /var/log/syslog

lessを開いた後は、次のキー操作で画面を制御します。

キー動作
Space次の画面へ進む
b前の画面へ戻る
/検索語ファイル内を検索する
n次の検索結果へ移動する
qlessを終了する

数百行を超えるログファイルをcatで表示すると、画面が一瞬で流れて読めなくなってしまいます。

そうした長いファイルはcatではなくlessで開くのが基本ルールです。

head・tail:ファイルの先頭・末尾だけを確認する

headはファイルの先頭部分、tailはファイルの末尾部分だけを表示するコマンドです。

# ファイルの先頭10行を表示する(デフォルト)
head /var/log/syslog

# ファイルの末尾10行を表示する(デフォルト)
tail /var/log/syslog

行数を指定したい場合は、-nオプションを使います。

# 先頭5行だけ表示する
head -n 5 /var/log/syslog

# 末尾20行だけ表示する
tail -n 20 /var/log/syslog

ログファイルの調査では、「一番新しいエラーはどれか」を知りたい場面が多いため、tailは特に使用頻度の高いコマンドです。

用途に応じたコマンドの使い分け

ファイルサイズと目的で選ぶ判断軸

4つのコマンドは似ているようで、それぞれ得意な場面が異なります。

コマンド向いている場面
cat数十行以内の短いファイル全体をさっと確認したいとき
less数百〜数千行の長いファイルをスクロールしながら読みたいとき
headファイルの先頭(ヘッダー行やCSVの列名など)だけ知りたいとき
tailログの最新状況など、末尾の内容だけ知りたいとき

判断に迷ったら、まずlessを使う癖をつけておくと、意図せず大量出力で画面が埋まる事態を避けられます。

tail -fでログをリアルタイム監視する

tailには、ファイルの更新をリアルタイムで追跡し続ける-f(follow)オプションがあります。

# ログファイルの更新をリアルタイムで監視する
tail -f /var/log/syslog

このコマンドを実行すると、新しいログが追記されるたびに画面に表示され続けます。

アプリケーションの動作確認や障害調査の際、別のターミナルでこの監視を走らせながら操作するのが定番の使い方です。

監視を終了するにはCtrl + Cを押します。

つまずきやすいポイント:巨大ログファイルをcatして端末が固まった話

私が初めてサーバーの障害調査をした際、深く考えずに大きなログファイルをcatしてしまい、ターミナルが大量の出力で埋め尽くされたことがあります。

❌ Before:ファイルサイズを確認せずにcatで開く

# 数百MBあるログファイルをいきなりcatする
cat /var/log/large-app.log

このファイルは数十万行を超えるサイズがあり、catで開いた瞬間、画面が猛烈な速さで流れ続けて何も読み取れませんでした。

さらに、大量出力によってターミナルの反応が一時的に重くなり、Ctrl + Cで止めるまで数秒待たされる結果になりました。

✅ After:先にファイルサイズを確認し、目的に応じたコマンドを選ぶ

# 先にファイルサイズと行数を確認する
ls -lh /var/log/large-app.log
wc -l /var/log/large-app.log

# 末尾だけ確認したい場合はtail
tail -n 100 /var/log/large-app.log

# じっくり読みたい場合はless
less /var/log/large-app.log

ls -lh-hは人間に読みやすい単位(KB・MB・GBなど)でサイズを表示するオプションで、wc -lは行数をカウントするコマンドです。

この経験以来、初めて触るログファイルは、まずサイズと行数を確認してからコマンドを選ぶようにしています。

応用・一歩先の使い方

headとtailを組み合わせて特定範囲を抜き出す

headtailをパイプ(|)で組み合わせると、ファイルの任意の範囲だけを抜き出すことができます。

# 11行目から20行目までを表示する
head -n 20 sample.log | tail -n 10

パイプ(|とは、あるコマンドの出力結果を、次のコマンドの入力として渡す仕組みのことです。

head -n 20で先頭20行を取り出し、その結果をさらにtail -n 10に渡すことで、「11〜20行目」というピンポイントな範囲を抜き出せます。

lessとgrepを組み合わせて検索しながら読む

lessはコマンド内検索(/)も便利ですが、あらかじめ絞り込んでから開きたい場合はgrepと組み合わせます。

# "ERROR"を含む行だけを抜き出してlessで確認する
grep "ERROR" /var/log/syslog | less

grepについては次回の記事で詳しく解説しますが、このように複数のコマンドをパイプでつなげられる点が、Linuxコマンド操作の大きな強みです。

まとめ

この記事のポイント

  • catは短いファイル全体の表示、lessは長いファイルをスクロールしながら読むのに向いている
  • headは先頭、tailは末尾だけを表示し、-nで行数を指定できる
  • tail -fでログファイルの更新をリアルタイム監視できる
  • 大きいファイルはいきなりcatせず、ls -lhwc -lでサイズ・行数を確認してからコマンドを選ぶ

次に読むべき記事

ファイルの中身を確認する方法が分かったら、次は特定の文字列を検索するgrepコマンドに進みましょう。

→ 次の記事:grepでテキストを検索する基本

タグ: Linux, 初心者向け, 基本操作

タイトルとURLをコピーしました