ファイルの中身を見る

ファイルの中身を見る とは

ターミナルでファイルの中身を表示するコマンドを使い、テキストファイルの内容を確認します。本レッスンでは、ファイルの中身を見る の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

サーバーに入ってまず行うのは、設定ファイルやログを読むことです。cat で一気に表示するか、less で大きなファイルをページ送りで読むか、head/tail で先頭・末尾だけ抜き出すかを使い分けると、調査速度が大幅に上がります。本レッスンでは閲覧系コマンド4つの違いを実例で身につけます。

障害対応や本番デプロイの現場では、巨大なログファイルが何ギガバイトもあることが普通です。誤って cat huge.log を打つと端末がフリーズしますし、less を覚えていないと「とりあえず開く」ができません。各コマンドの守備範囲を意識して、状況に合わせて切り替えられるようにしましょう。

基本コマンド

コマンド使いどころ
cat短いファイルを丸ごと表示。複数ファイルの結合にも使う
less大きいファイルをページ送りで閲覧 (q で終了)
more古い系列のページャ。今は less が主流
head先頭 N 行を見る (-n で行数指定)
tail末尾 N 行を見る。-f でログを追従
wc -l行数を数える

動作の図解

diagram (will load when visible)

代表例

ターミナル

# データを作って 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 は対話的なページャで、覚えておきたいキーは少数です。

キー動作
Space1ページ進む
b1ページ戻る
/word前方検索
n次のヒット
g / G先頭 / 末尾へ
q終了

本番サーバーでログを開くときは、less +F /var/log/syslog と打てば「tail -f モードで開いて、Ctrl-C で普通の less に戻る」という贅沢な操作も可能です。

大きいファイルを cat で開くと端末が固まる原因になります。サイズ不明のときは lesshead で先頭だけ確認してから判断するのが安全です。

「読む」「数える」「流れを追う」の3パターンを自在に切り替えられるかが、運用エンジニアの腕の見せどころです。

バイナリは file で先に確認する

cat でバイナリを開くと制御コードで端末表示が壊れることがあります。file で種別を確認してから xxdod -c で覗くのが安全です。

ターミナル

file /bin/ls xxd /bin/ls | head -3

範囲を切り出す合わせ技

headtail を組み合わせると、ファイルの「途中の数行」だけを取り出せます。

ターミナル

# 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 Ntail -n N で行数を絞れる
  • tail -f または tail -F でログを追従できる
  • wc -l で行数を数えるのも調査の定番
  • バイナリは file xxd od -c で覗くのが安全

次のレッスン

次は ファイルとディレクトリの作成 で、ターミナルでファイルの中身を表示するコマンドを使い、テキストファイルの内容を確認します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. cat / less / head / tail の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. cat / less / head / tail とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

課題

  1. 5 行のファイルを作る
  2. head と tail を両方使う

ヒント

script.sh
script.sh
学習モード
script.sh
ターミナル出力