Linuxのテキスト処理入門|cat・less・grep・headで初心者がファイルの中身を読む方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのテキスト処理入門|cat・less・grep・headで初心者がファイルの中身を読む方法
「サーバーに設定ファイルがあると言われたけど、どうやって中身を確認すればよいんだろう?」
「ログファイルが大きすぎてcatで開いたら画面が流れていった…」

Linuxを触り始めた人が最初につまずくのが、ファイルの中身を「読む」操作です。Windowsならダブルクリックでメモ帳が開きますが、Linuxのターミナルではそうはいきません。

この記事では、cat・less・head・tail・grepの5つのコマンドを使って、ファイルの中身を読む・絞り込む方法を初心者向けに解説します。WSL2・VPS・クラウドシェルなどどの環境でも使える基本操作です。

この記事のポイント

・catは小さなファイルの全表示、lessは大きなファイルをスクロールして読む
・headとtailで先頭・末尾だけ素早く確認できる
・grepで特定の文字列を含む行だけを絞り込んで表示できる
・5つを組み合わせるとログ解析・設定確認が劇的に速くなる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜLinuxのテキスト操作を覚えるべきなのか

Linuxのサーバー管理では、ほとんどの情報が「テキストファイル」として保存されています。

・サーバーの設定: /etc/nginx/nginx.conf、/etc/ssh/sshd_config
・ログファイル: /var/log/messages、/var/log/auth.log
・ユーザー情報: /etc/passwd

これらを素早く読めるかどうかが、現場での作業速度に直結します。「どのコマンドで読むか」を場面ごとに使い分けるだけで、ファイル操作の効率が大きく変わります。

5つのコマンドの役割を理解する

まず全体像を把握しましょう。

コマンド 用途 適したファイルサイズ
cat ファイルを全部表示する 小さいファイル(数十行程度)
less スクロールしながら読む 大きなファイル(数百行以上)
head 先頭だけ表示する サイズを問わない
tail 末尾だけ表示する サイズを問わない
grep 特定の文字列を含む行だけ表示する サイズを問わない

catコマンド|小さなファイルをそのまま表示する

1. 基本の使い方

catはファイルの内容を全部まとめて画面に表示します。名前の由来は「concatenate(連結する)」です。

# ファイルの内容を表示する $ cat /etc/hostname my-server # 行番号を付けて表示する(-n オプション) $ cat -n /etc/hosts 1 127.0.0.1 localhost 2 127.0.1.1 my-server 3 4 # The following lines are desirable for IPv6 capable hosts 5 ::1 ip6-localhost ip6-loopback

2. catが向かないシーン

catは便利ですが、大きなファイルには使わないのが鉄則です。たとえば/var/log/messagesのような数万行のログファイルをcatで開くと、テキストが高速スクロールして何も読めなくなります。そういった場合は次のlessを使います。

lessコマンド|大きなファイルをスクロールして読む

1. 基本の使い方

lessはページャーと呼ばれるツールで、ファイルを画面単位で表示し、キーボードでスクロールしながら読めます。

# ファイルをlessで開く $ less /var/log/syslog # 開いた後の操作 # スペースキー または f キー:次のページへ # b キー:前のページへ戻る # / キー → 文字列入力 → Enter:前方検索 # n キー:次の検索結果へ # q キー:lessを終了する

2. 検索しながら読む

lessの中では「/」キーで検索できます。たとえばエラーが出ていないかチェックするときは次のように使います。

# lessを開いてからErrorを検索する場合 $ less /var/log/syslog # → 開いた後に /Error と入力してEnter # → n キーで次のErrorへ移動する

lessはログファイルのような大きなファイルを読む時の標準ツールです。WSL2上のUbuntu、ConoHaなどのVPS、どの環境でも同じように動きます。

headとtailコマンド|先頭・末尾だけ素早く確認する

1. headで先頭行を表示する

headはファイルの先頭から指定した行数だけを表示します。デフォルトは10行です。設定ファイルのコメントや構造を素早く確認するのに便利です。

# デフォルトで先頭10行を表示する $ head /etc/ssh/sshd_config # : sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $ # This is the sshd server system-wide configuration file. # See sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented out. # 先頭5行だけ表示する(-n オプション) $ head -n 5 /etc/ssh/sshd_config

2. tailで末尾行を表示する

tailはファイルの末尾から指定した行数を表示します。ログファイルの最新エントリを確認するのに使います。

# デフォルトで末尾10行を表示する $ tail /var/log/auth.log Jun 28 03:01:01 my-server CRON[12345]: pam_unix(cron:session): session opened for user root Jun 28 03:01:01 my-server CRON[12345]: pam_unix(cron:session): session closed for user root # 末尾20行を表示する $ tail -n 20 /var/log/auth.log # リアルタイムでログを監視する(-f オプション) $ tail -f /var/log/auth.log # → Ctrl+C で終了する

-fオプションは特に重要です。ログがリアルタイムで追加されるのを画面で見続けられるため、設定変更後の動作確認やトラブルシューティングで頻繁に使います。

grepコマンド|特定の文字列を含む行だけ絞り込む

1. 基本の使い方

grepはファイルの中から特定の文字列を含む行だけを抽出します。ログが膨大でも、エラーに関係する行だけを取り出せます。

# ファイルの中からErrorを含む行を表示する $ grep Error /var/log/syslog Jun 28 02:15:33 my-server kernel: [12345.678] Error reading device # 大文字小文字を区別しない(-i オプション) $ grep -i error /var/log/syslog # マッチした行の前後3行も表示する(-C オプション) $ grep -C 3 Error /var/log/syslog # 行番号付きで表示する(-n オプション) $ grep -n Error /var/log/syslog 1523:Jun 28 02:15:33 my-server kernel: [12345.678] Error reading device

2. パイプと組み合わせる

grepはパイプ(|)と組み合わせると更に強力になります。たとえばtailで取得した最新ログをgrepで絞り込む、というパターンです。

# 末尾100行の中からErrorを含む行だけ表示する $ tail -n 100 /var/log/syslog | grep Error # 設定ファイルのコメント行(#始まり)を除外して表示する(-v オプション) $ grep -v '^#' /etc/ssh/sshd_config | grep -v '^$' PermitRootLogin yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server

最後の例は「コメント行(#始まり)を除き、空行も除いたSSH設定の実体だけを表示する」という実務でよく使うパターンです。

5コマンドを使いこなすための実践シナリオ

1. シナリオ:サービスが起動しない時のログ調査

実際の現場では、複数のコマンドを組み合わせて使います。

# ステップ1: ログファイルが存在するか確認する $ ls -la /var/log/nginx/ -rw-r--r-- 1 root root 24819 Jun 28 03:00 access.log -rw-r--r-- 1 root root 1352 Jun 28 02:55 error.log # ステップ2: エラーログの末尾20行を確認する $ tail -n 20 /var/log/nginx/error.log 2026/06/28 02:55:01 [emerg] 1234#0: bind() to 0.0.0.0:80 failed (98: Address already in use) 2026/06/28 02:55:01 [emerg] 1234#0: still could not bind() # ステップ3: エラーメッセージが何件あるか確認する $ grep -c 'emerg' /var/log/nginx/error.log 5

2. シナリオ:設定ファイルの構造を素早く把握する

# ステップ1: 設定ファイルの先頭を確認して全体像を把握する $ head -n 20 /etc/nginx/nginx.conf # ステップ2: lessで全体をスクロールしながら読む $ less /etc/nginx/nginx.conf # ステップ3: grepでserver_nameの設定だけを抽出する $ grep 'server_name' /etc/nginx/nginx.conf server_name example.com www.example.com;

WSL2・VPS環境での実際の操作例

WSL2(Windows上のLinux環境)でもVPSでも同じコマンドが使えます。以下はWSL2上のUbuntu 24.04での実行例です。

# WSL2のUbuntu 24.04での実行例 $ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.2 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.2 LTS (Noble Numbat)" # システムログをgrepでエラーだけ表示する $ sudo grep -i 'error\|fail' /var/log/syslog | tail -n 10 # lessでスクロールしながらシステムログを読む $ sudo less /var/log/syslog

VPS(ConoHa VPS・さくらVPS等)にSSHでログインした場合も、全く同じコマンドが使えます。

コマンドの早見表まとめ

やりたいこと コマンド
小さいファイルを全部表示する cat ファイル名
行番号付きで表示する cat -n ファイル名
大きいファイルをスクロールして読む less ファイル名
先頭10行だけ表示する head ファイル名
末尾10行だけ表示する tail ファイル名
リアルタイムでログを監視する tail -f ファイル名
文字列を含む行だけ表示する grep 文字列 ファイル名
コメント行を除外して表示する grep -v '^#' ファイル名
末尾のログからエラーを絞り込む tail -n 100 ファイル名 | grep エラー文字列

よくあるトラブルと対処法

「Permission denied」が出てファイルを読めない

ログファイルや設定ファイルはroot権限が必要なものがあります。その場合はsudoを付けて実行します。

# 権限エラーが出た場合 $ cat /var/log/auth.log cat: /var/log/auth.log: Permission denied # sudoを付けて実行する $ sudo cat /var/log/auth.log Jun 28 03:01:01 my-server sshd[1234]: ...

lessで開いたファイルを終了できない

lessを終了するには「q」キーを押します。うっかりlessを開いてしまっても慌てずにqキーを押せばターミナルに戻れます。

grepで何も表示されない

検索文字列が実際のファイルに含まれていない場合、何も出力されずにプロンプトに戻ります。大文字小文字の違いでマッチしていないことが多いので、grep -i(大文字小文字を区別しない)で試してみましょう。

# 大文字小文字を区別せずに検索する $ grep -i error /var/log/syslog

本記事のまとめ

今回紹介したコマンドをまとめます。

cat: 小さいファイルを全部表示。-nで行番号付き表示も可能
less: 大きいファイルをスクロールして読む。/で検索できる
head: ファイルの先頭N行を表示する。デフォルトは10行
tail: ファイルの末尾N行を表示する。-fでリアルタイム監視ができる
grep: 特定の文字列を含む行だけを絞り込む。パイプと組み合わせて使う

この5つのコマンドは、どんなLinux環境(WSL2・VPS・クラウド)でも共通して使えます。毎日の設定確認やログ調査で繰り返し使うことで、自然と指が覚えていきます。

次のステップとして、ここで紹介した各コマンドの応用的な使い方を深掘りしていきましょう。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

関連記事

Linuxで特定の文字列を含むファイルを検索する方法|grep -rlとfind+grepの使い分け
tail -fコマンドでログをリアルタイムに監視する方法|grepフィルタやローテーション対策も
awkコマンドでテキストを加工する方法|列の抽出・集計やログ解析の実践例も
sedコマンドで文字列を置換する方法|-iの一括置換やファイル編集も
Linuxのファイル検索入門|findコマンドで目的のファイルを素早く見つける方法
xargsコマンドの使い方|findやgrepの出力を引数に渡して一括処理する方法
Linuxの主要なログファイルを確認する方法|/var/log/配下の一覧とjournalctlの使い方

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。