CLIで「素早く読む・探す・追う」を最短でこなせるようにまとめてみました。
まだ知見が浅いので、「このコマンドも載せた方がいい」「この使い方も便利」などあればぜひコメントお願いします。
対象環境と表記
- Linux/macOS/Git Bash:bash 例を掲載しています
- Windows PowerShell:PowerShell 例を掲載しています
文字コードが崩れる場合(Windows)は
chcp 65001でUTF-8に切り替えてみてください。
一気に表示(全体を見る)
- bash:
cat - PowerShell:
Get-Content
# bash
cat file.txt
cat -n file.txt # 行番号付きで表示
# PowerShell
Get-Content file.txt
Get-Content file.txt | nl # 行番号を付けたい場合(nlがある環境の場合)
大きなファイルは less での閲覧が快適だと思います(次章)。
ページ送りで読む(少しずつ、検索も可)
less(スクロール、検索、行番号、色対応が便利)
# bash(less推奨)
less file.txt
less -N file.txt # 行番号表示
less -R file.log # ANSIカラーを解釈(grep --color など)
# PowerShell(Git for Windows 等で less が同梱されていることが多い)
less file.txt
less の基本操作
- スクロール:Space/↓/↑,
b(1ページ戻る) - 先頭/末尾:
g(先頭),G(末尾) - 検索:
/キーワード→n(次へ),N(前へ) - 終了:
q - ログ追尾:
less +F file.log(Ctrl+Cで追尾解除して通常閲覧に戻る)
moreというものもあるらしい
more file.txt
先頭・末尾だけ見る(ざっと確認)
- 先頭:
head - 末尾:
tail - PowerShell:
Get-Content -Head N/Get-Content -Tail N
head -n 20 file.txt # 先頭20行
tail -n 50 file.txt # 末尾50行
head/tailは既定では10行を表示する
Get-Content file.txt -Head 20
Get-Content file.txt -Tail 50
ログを追尾(リアルタイム監視ができる)
- bash:
tail -f(-Fは名前が変わっても追う) - PowerShell:
Get-Content -Wait(-Tailと併用すると最後から)
tail -f app.log
# 末尾から10行表示し以後を追尾
Get-Content app.log -Tail 10 -Wait
キーワードに絞って追尾
# bash
tail -f app.log | grep ERROR --color=auto
# PowerShell
Get-Content app.log -Wait | Select-String -Pattern "ERROR"
内容を検索する(横断もできる)
- bash:
grep(色付け--color=auto、再帰-r) - PowerShell:
Select-String(別名sls)
# 単一ファイル
grep -n "keyword" file.txt # 行番号付き
# ディレクトリを再帰的に
grep -rn "keyword" ./logs
# 大文字小文字を無視
grep -rin "keyword" ./src
# 単一ファイル
Select-String -Path file.txt -Pattern "keyword" -CaseSensitive:$false
# ディレクトリ再帰
Select-String -Path .\logs -Pattern "keyword" -Recurse
エディタで閲覧(読み取り専用で安全に見る)
vi/vim は閲覧にも便利。読み取り専用で開けば誤編集を防げます。
# 読み取り専用
vi -R file.txt
vim -R file.txt
基本操作(ノーマルモード)
- 移動:
gg(先頭),G(末尾),:行番号(指定行へ) - 検索:
/キーワード→n(次へ),N(前へ) - 行番号表示:
:set number(非表示は:set nonumber) - 終了:
:q(変更なし),:q!(破棄),:wq(保存して終了)
Windowsで
vimを使うには Git for Windows や NeoVim/WSL の導入が手軽です。
よく使えそうなもの
# 直近のエラーだけ見る(例:末尾100行でERRORを強調)
tail -n 100 app.log | grep --color=auto -n "ERROR"
# ログを追いながら特定語を強調表示させる
tail -f app.log | grep --color=auto -E "ERROR|WARN"
# 長い1行ログを折り返さずに読む(矢印で横スクロール)
less -RS long.log
# ファイルの差分を行単位でざっと見る
diff -u old.txt new.txt | less -R
# 直近のエラーだけ見る
Get-Content app.log -Tail 100 | Select-String -Pattern "ERROR"
# 追いながら特定語をハイライトさせる
Get-Content app.log -Wait | Select-String -Pattern "ERROR|WARN"
# 大きいファイルもページングしながら確認できる
Get-Content big.txt | Out-Host -Paging
まとめ
- 全体を見る:
cat/type/Get-Content - 快適に読む:
less(検索・ページ送り・追尾) - 先頭/末尾:
head/tail(PowerShellは-Head/-Tail) - 追尾:
tail -f/Get-Content -Wait - 検索:
grep/Select-String - 読み取り専用エディタ:
vi -R file/vim -R file
冒頭にも記載しましたが、まだ知見が浅いので、「このコマンドも載せた方がいい」「この使い方も便利」などあればぜひコメントお願いします。