ファイルの中身を見る
ファイルの中身を見る とは
ターミナルでファイルの中身を表示するコマンドを使い、テキストファイルの内容を確認します。本レッスンでは、ファイルの中身を見る の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
サーバーに入ってまず行うのは、設定ファイルやログを読むことです。cat で一気に表示するか、less で大きなファイルをページ送りで読むか、head/tail で先頭・末尾だけ抜き出すかを使い分けると、調査速度が大幅に上がります。本レッスンでは閲覧系コマンド4つの違いを実例で身につけます。
障害対応や本番デプロイの現場では、巨大なログファイルが何ギガバイトもあることが普通です。誤って cat huge.log を打つと端末がフリーズしますし、less を覚えていないと「とりあえず開く」ができません。各コマンドの守備範囲を意識して、状況に合わせて切り替えられるようにしましょう。
基本コマンド
| コマンド | 使いどころ |
|---|---|
cat | 短いファイルを丸ごと表示。複数ファイルの結合にも使う |
less | 大きいファイルをページ送りで閲覧 (q で終了) |
more | 古い系列のページャ。今は less が主流 |
head | 先頭 N 行を見る (-n で行数指定) |
tail | 末尾 N 行を見る。-f でログを追従 |
wc -l | 行数を数える |
動作の図解
代表例
ターミナル
# データを作って cat で確認
$ cd /tmp
$ printf 'one\ntwo\nthree\nfour\nfive\n' > nums.txt
$ cat nums.txt
one
two
three
four
fiveターミナル
# 先頭 2 行・末尾 2 行
$ head -n 2 nums.txt
one
two
$ tail -n 2 nums.txt
four
fiveターミナル
# 行数を数える
$ wc -l nums.txt
5 nums.txtターミナル
# パイプで先頭だけ確認するのも定番
ls -l /etc | head -5複数ファイルの結合と上書き注意
ターミナル
# 2つを連結して新ファイルへ
$ printf 'a\n' > /tmp/a.txt && printf 'b\n' > /tmp/b.txt
$ cat /tmp/a.txt /tmp/b.txt > /tmp/ab.txt
$ cat /tmp/ab.txt
a
bログ追従のテンプレ
tail -f はリアルタイムでログを追えるため、Web サーバーのアクセスログや開発中のアプリのログ観察に重宝します。
ターミナル
# 直近 50 行を出し、その後も新しい行を流す
tail -n 50 -f /var/log/syslogさらに tail -F を使うと、ログローテーションで新しいファイルに切り替わっても追従し続けてくれます。常駐監視用途では -F の方が安全です。
less の基本操作
less は対話的なページャで、覚えておきたいキーは少数です。
| キー | 動作 |
|---|---|
Space | 1ページ進む |
b | 1ページ戻る |
/word | 前方検索 |
n | 次のヒット |
g / G | 先頭 / 末尾へ |
q | 終了 |
本番サーバーでログを開くときは、less +F /var/log/syslog と打てば「tail -f モードで開いて、Ctrl-C で普通の less に戻る」という贅沢な操作も可能です。
大きいファイルを
catで開くと端末が固まる原因になります。サイズ不明のときはlessかheadで先頭だけ確認してから判断するのが安全です。
「読む」「数える」「流れを追う」の3パターンを自在に切り替えられるかが、運用エンジニアの腕の見せどころです。
バイナリは file で先に確認する
cat でバイナリを開くと制御コードで端末表示が壊れることがあります。file で種別を確認してから xxd や od -c で覗くのが安全です。
ターミナル
file /bin/ls
xxd /bin/ls | head -3範囲を切り出す合わせ技
head と tail を組み合わせると、ファイルの「途中の数行」だけを取り出せます。
ターミナル
# 3 行目から 5 行目だけを表示する
head -n 5 /tmp/nums.txt | tail -n 3この考え方はログ調査で「特定の時間帯だけ見たい」というときにそのまま応用できます。sed -n '3,5p' でも同じことができますが、まずは head + tail のパイプで感覚をつかみましょう。
やってみよう
演習エディタで複数行のファイルを作り、head -n tail -n wc -l で先頭・末尾・行数を取り出してみましょう。さらに cat -n で行番号付きにすると、デバッグ時の取り回しが良くなります。
まとめ
- 短いファイル →
cat、長いファイル →lessまたはhead/tail head -n N、tail -n Nで行数を絞れるtail -fまたはtail -Fでログを追従できるwc -lで行数を数えるのも調査の定番- バイナリは
filexxdod -cで覗くのが安全
次のレッスン
次は ファイルとディレクトリの作成 で、ターミナルでファイルの中身を表示するコマンドを使い、テキストファイルの内容を確認します を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- cat / less / head / tail の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. cat / less / head / tail とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
課題
- 5 行のファイルを作る
- head と tail を両方使う