/Linuxコマンド

テキスト処理

ファイルの中身を見る

cat・less・head・tail など、テキストファイルの中身を表示するコマンド。ログの監視(tail -f)もここ。

cat中身をそのまま表示する / つなげる

ファイルの中身をそのまま表示します。複数のファイルをつなげるのにも使います。

bash
$ cat notes.md
$ cat -n main.go             # 行番号を付ける
$ cat part1 part2 > all.txt  # つなげて1つのファイルにする
$ cat -A config.ini          # タブ(^I)や改行(\$)などの見えない文字を表示

ヒアドキュメントで複数行のファイルを作るときにもよく使います。

bash
cat > hello.sh <<'EOF'
#!/usr/bin/env bash
echo "hello"
EOF

lessページ単位で読む

長いファイルやコマンドの出力を、スクロールしながら読みます。

bash
$ less /var/log/syslog
$ journalctl | less
$ less -N main.go        # 行番号付き
$ less -S wide.csv       # 長い行を折り返さない(左右にスクロール)
$ less +F app.log        # tail -f のように追いかける(Ctrl+C で通常表示に戻る)
キー動作
Space / b1画面進む / 戻る
j / k1行進む / 戻る
g / G先頭 / 末尾
/文字列 / ?文字列下 / 上に検索(n で次)
&文字列一致する行だけ表示
F末尾を追いかける
q終了

ファイルの先頭の数行だけを表示します。

bash
$ head access.log            # 先頭10行
$ head -n 3 data.csv         # 先頭3行
$ head -c 100 file.bin       # 先頭100バイト
$ head -n -5 file.txt        # 最後の5行を除いてすべて

tail末尾だけ表示する / 追いかける

ファイルの末尾の数行を表示します。-f を付けると、追記されるログをリアルタイムに見られます。

bash
$ tail app.log               # 末尾10行
$ tail -n 50 app.log
$ tail -n +2 data.csv        # 2行目から最後まで(見出し行を飛ばす)
$ tail -f /var/log/nginx/access.log    # 追記されるたびに表示し続ける
$ tail -F app.log            # ファイルが作り直されても追いかける(ログのローテーション向け)
$ tail -f app.log | grep --line-buffered ERROR

tac行を逆順に表示する

ファイルを最後の行から逆順に表示します。

bash
$ tac access.log | head      # 新しい行から見る

nl行番号を付ける

行番号を付けて表示します。

bash
$ nl -ba script.sh           # 空行にも番号を付ける

xxd / odバイナリを16進数で見る

ファイルの中身を16進数などで表示します。

bash
$ xxd image.png | head
$ xxd -l 16 file.bin         # 先頭16バイトだけ
$ od -c text.txt             # 1文字ずつ表示(改行コードの確認に便利)

column表の形に揃える

テキストを表の形に揃えて表示します。

bash
$ mount | column -t
$ column -s, -t < data.csv | less -S     # CSVを表の形で見る

stringsバイナリから文字列を取り出す

Ubuntu には最初から入っていません。 で入れられます。

バイナリファイルの中から、読める文字列だけを取り出します。

bash
$ strings /usr/bin/ls | grep -i version