ファイルの中身を見る
テキストファイルの内容を確認する方法はいくつかあります。短いファイルは cat で一気に表示、長いファイルは less でスクロールしながら閲覧します。先頭だけ見たいときは head、末尾だけ見たいときは tail を使い、ログの最新行を追うときに重宝します。
ファイルを作り、動かし、消せるようになった。だが消したり書き換えたりする前に、まずやるべきことがある。中身を読むことだ。
テキストファイルの中身を読むのは、設定の確認やログの調査など、日々の作業で最も頻度の高い操作のひとつである。
読む手段はひとつではない。Linuxには中身を表示する方法がいくつも用意されていて、ファイルの長さや目的に応じて使い分ける。
どれもファイルを書き換えずに「見るだけ」なので、まずは気軽に試して中身を確認する癖をつけたい。ここでは cat・less・head・tail の4つを押さえる。
これらを使いこなせると、設定をいじる前に現状を把握したり、トラブル時にログから手がかりを拾ったりが格段にやりやすくなる。
📄 短いファイルは cat
短いファイルなら、いちばん手軽なのは cat だ。名前は concatenate(連結する)に由来し、本来は複数ファイルをつないで出力するコマンドである。
cat ファイル名 と1つ指定すれば、その内容をまるごと標準出力(ふつうは画面)に流す。たとえば cat /etc/hosts で、ホスト名とIPアドレスの対応表がそのまま表示される。
-n オプションを付けると各行に行番号が振られる。設定ファイルの何行目かを把握したいときや、エラーメッセージが「何行目」と指すときの確認に便利だ。空行には番号を付けたくない場合は -b を使う。
cat は便利な反面、万能ではない。長いファイルに cat を使うと内容が一瞬で画面を流れ切ってしまい、肝心の部分を読めない。
数百行あるログを cat で開くのは典型的な失敗だ。そういうときは次に挙げる less や、先頭・末尾だけ見る head・tail に切り替える。
もう一つ、知らないと足をすくわれる挙動がある。cat にファイル名を渡さずに実行すると、キーボードからの入力(標準入力)をそのまま画面に返す動作になるのだ。
これは知らないと「コマンドが固まった」と勘違いしがちだ。抜け出すには Ctrl + d で入力の終わり(EOF)を送る。この終了方法は最初に覚えておくと安心だ。
📜 画面に収まらないファイルは less
1画面に収まらない大きなファイルは less で読む。ページ送りしながら読む道具だ。
less ファイル名 で開き、スペースキーで1ページ進み、b キーで1ページ戻り、上下のカーソルキーで1行ずつスクロールできる。
/ に続けて文字を打てばファイル内を前方検索でき、n で次の一致へ移動、G で末尾へ、g で先頭へ一気に飛べる。読み終えたら q で終了する。
巨大なログでも軽快なのは、ファイル全体をメモリに読み込まずに表示するからだ。
同じくページ送りができる more というコマンドも昔からある。どちらを選ぶか迷ったら less でよい。
less は前方向へ戻れたり検索できたりと機能が豊富なので、迷ったら less を選んでおけば間違いない(「less is more」をもじって less のほうが高機能、と覚える人もいる)。
more はファイルの末尾まで表示すると自動で終了するが、less は q を押すまで画面に留まるという違いもある。
ここが効いてくる。man でマニュアルを読むときの操作感も、この less とほぼ同じなのだ。だから less の操作(スペースで進む、b で戻る、/ で検索、q で終了)を覚えておくと、そのままマニュアル閲覧にも活きる。
🔚 端だけ見たいときは head と tail
ファイル全体ではなく、先頭か末尾の一部だけ見たい。そんな場面は意外と多い。そこで活躍するのが head と tail だ。
head はファイルの先頭から、tail は末尾から内容を表示する。どちらも行数を指定しなければ既定で10行を表示し、head -4 file のように -数字 を付ければその行数だけに絞れる(head -n 4 file とも書ける)。
長いログの冒頭にあるヘッダだけ確認したいときは head、最近書き込まれた最新のできごとだけ見たいときは tail、というように使い分ける。
設定ファイルの形式をちらっと確かめるとき、cat より head のほうが画面を汚さず済む。
ログは新しい行が末尾に追記されていくため、調査では「最近何が起きたか」を見る tail の出番が圧倒的に多くなる。
tail には、さらに真価を発揮する一手がある。-f オプションだ。
tail -f /var/log/messages のように使うと、ファイルに新しい行が追記されるたびに、その行が画面へリアルタイムに流れ続ける。
サービスを起動・操作しながらログの動きを目で追う、いわゆる「ログ監視」の定番手段で、サーバ運用やアプリのデバッグで頻繁に使う。
たとえば別の端末でWebサーバにアクセスしながら、こちらの端末で tail -f を回してアクセスログが増えるのを確認する、といった使い方だ。流し続ける表示を止めるには Ctrl + c を押す。
先頭から数えてN行目以降を出す tail -n +N といった指定もでき、特定の位置から末尾までをまとめて確認したいときに役立つ。
🔗 表示系コマンドはパイプの出発点
ここまで4つを別々に見てきたが、実務での本当の強みは、これらを単体で使うだけでなくパイプ(|)で他のコマンドにつないだときに出る。
たとえば一覧の多いコマンドの結果を コマンド | less と渡して落ち着いて眺めたり、ログを tail で絞った範囲をさらに grep で検索にかけたり、cat ファイル | grep キーワード で特定の行だけ拾ったりする。
標準出力をそのまま次のコマンドの入力に渡せるのがLinuxの強みで、表示系コマンドはその出発点になる。
「短ければ cat、長ければ less、端だけなら head/tail、追い続けるなら tail -f」と覚えておけば、状況に応じて最短手で中身にたどり着ける。次は、そのファイルに誰が触れてよいかを決める権限の話に入る。