Linux入門

ファイルの中身を見る・検索する方法【cat/less/grep】

Linux入門
記事内に広告が含まれています。

「ファイルの中身を見たいけど、どのコマンドを使えばいいの?」

Linuxでは、ファイルの内容を確認したり特定の文字列を検索したりするコマンドが複数あります。この記事では catlessheadtailgrep の5つを場面別にわかりやすく解説します。実際に手を動かしながら読み進めてください。

ターミナルの基本操作がまだの方は「ターミナルの使い方と基本コマンド20選」をご覧ください。

5つのコマンド 使い分けの基本

まず全体像を整理しましょう。「どんな場面でどのコマンドを使うか」をフロー図で確認します。

cat/less/head/tail コマンド使い分けフロー図
▲ ファイルサイズや目的に応じてコマンドを選ぼう。迷ったらこのフローで判断できる

cat ― ファイルの内容をまるごと表示する

catは「concatenate(連結する)」の略で、ファイルの内容を画面にそのまま出力するコマンドです。短いファイルを素早く確認するときに使います。

# 基本的な使い方
$ cat memo.txt
今日のタスク
・Linuxの勉強
・記事を書く

# 行番号を表示
$ cat -n memo.txt
     1  今日のタスク
     2  ・Linuxの勉強
     3  ・記事を書く

# 複数ファイルを連結して表示
$ cat file1.txt file2.txt

catのよくある使い方

  • 設定ファイルの中身をサッと確認する
  • cat file.txt > output.txt:ファイルの内容を別ファイルにコピー
  • cat file1.txt file2.txt > merged.txt:複数ファイルを1つに結合

less ― 長いファイルをスクロールして読む

lessは、大きなファイルをページ単位でスクロールしながら読めるコマンドです。ログファイルの確認など、長いテキストを読む場面で大活躍します。

$ less /var/log/syslog

less の操作キー

キー動作
スペース / f次のページへ
b前のページへ
↑ / ↓1行ずつ移動
/キーワードキーワードを検索(n で次の一致へ)
Gファイルの末尾へジャンプ
gファイルの先頭へジャンプ
q終了

head / tail ― ファイルの先頭・末尾を表示する

headはファイルの先頭、tailはファイルの末尾を表示するコマンドです。デフォルトでは10行表示されます。

# 先頭5行を表示
$ head -5 /etc/passwd

# 末尾20行を表示
$ tail -20 /var/log/syslog

# リアルタイムでログを監視(Ctrl+Cで終了)
$ tail -f /var/log/syslog

tail -f はサーバーのログをリアルタイムで監視するときに非常に便利です。エラーが起きたときの定番コマンドとして覚えておきましょう。

grep ― ファイルから特定の文字列を検索する

grepは「Global Regular Expression Print」の略で、ファイルから指定した文字列を含む行を抽出するコマンドです。ログ解析や設定ファイルの確認で毎日使う最重要コマンドの一つです。

# 基本的な使い方
$ grep "error" /var/log/syslog

# 検索結果の例
Mar 14 12:00:01 server sshd[1234]: error: Connection refused

grep のよく使うオプション

grep コマンド オプション早見表
▲ grepのオプションを組み合わせることで、複雑なログ解析も簡単にできる
# 大文字小文字を区別しない
$ grep -i "Error" /var/log/syslog

# 行番号付きで表示
$ grep -n "error" app.log

# ディレクトリ内を再帰検索
$ grep -r "TODO" ./src/

# マッチしない行を表示(除外)
$ grep -v "debug" app.log

# 複数条件(errorまたはwarn)
$ grep -E "error|warn" app.log

パイプ(|)でコマンドをつなぐ

Linuxの真の力は、複数のコマンドを「パイプ(|)」でつなぐことで発揮されます。パイプは左のコマンドの出力を右のコマンドの入力として渡す仕組みです。

パイプ(|)でコマンドをつなぐ仕組み図
▲ パイプを使うと複数のコマンドを連結して強力な処理ができる
# ログからerrorを含む行の末尾20行を表示
$ cat /var/log/syslog | grep "error" | tail -20

# ファイル一覧からtxtファイルだけを表示
$ ls -la | grep ".txt"

# プロセス一覧からnginxを検索
$ ps aux | grep nginx

# エラー行数をカウント
$ cat app.log | grep "error" | wc -l

実践:ログファイルを調査してみよう

実際のサーバー運用でよく使うコマンドの組み合わせを紹介します。

# 1. まずログの末尾を確認
$ tail -50 /var/log/syslog

# 2. エラーだけを抽出して件数確認
$ grep -c "error" /var/log/syslog

# 3. 時刻付きでエラーを表示
$ grep -n "error" /var/log/syslog | tail -20

# 4. 特定の時間帯のエラーを検索
$ grep "Mar 14" /var/log/syslog | grep "error"

まとめ:この記事で学んだこと

  • cat:短いファイルを一気に表示。行番号は -n
  • less:長いファイルをスクロール表示。q で終了・/ で検索
  • head / tail:先頭・末尾のN行を表示。tail -f でリアルタイム監視
  • grep:文字列を検索。-i(大文字小文字無視)・-r(再帰)・-n(行番号)が定番
  • パイプ(|):コマンドをつないで複雑な処理を実現

関連記事

関連記事:パイプとリダイレクトでコマンドを組み合わせる

ログファイルの見方と管理【journalctl/logrotate】

📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。

コメント

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