はじめに
以前投稿したLinuxコマンドチートシートでは、コマンド単位で使用頻度別にまとめました。
本記事はその続編として、主要コマンドに付けるオプション(フラグ)まで踏み込んでまとめたものです。
「ls -laのように何となく打っているけど、それぞれの意味は説明できない」という状態から一歩抜け出すための記事を目指しています。
オプションは代表的なもの・実務でよく使うものに絞っています。全オプションはman <コマンド>または<コマンド> --helpで確認してください。
本記事の見方
- 🔥:このコマンドを使うなら必ず覚えておきたいオプション
- ⭐:知っていると作業効率が上がるオプション
- ロングオプション(
--all等)がある場合は併記しています
ファイル・ディレクトリ操作
ls - ディレクトリの中身を表示
| 頻度 |
オプション |
説明 |
| 🔥 |
-l |
詳細情報(パーミッション・所有者・サイズ・更新日時)を表示 |
| 🔥 |
-a, --all
|
隠しファイル(.から始まるファイル)も表示 |
| 🔥 |
-h, --human-readable
|
サイズをKB/MB/GB単位で見やすく表示(-lと併用) |
| ⭐ |
-R, --recursive
|
サブディレクトリを再帰的に表示 |
| ⭐ |
-t |
更新日時順にソート |
| ⭐ |
-S |
ファイルサイズ順にソート |
| ⭐ |
-r, --reverse
|
ソート順を逆にする |
| ⭐ |
-d, --directory
|
ディレクトリ自身の情報を表示(中身は展開しない) |
| 📝 |
-i, --inode
|
inode番号を表示 |
ls -lah # 隠しファイルも含め、サイズを見やすく詳細表示
ls -ltr # 更新日時の古い順に詳細表示(直近の変更が一番下に来る)
cd - ディレクトリ移動
| 頻度 |
記法 |
説明 |
| 🔥 |
cd - |
直前にいたディレクトリに戻る |
| 🔥 |
cd ~ または cd (引数なし) |
ホームディレクトリに移動 |
| ⭐ |
cd .. |
一つ上の階層へ |
mkdir - ディレクトリ作成
| 頻度 |
オプション |
説明 |
| 🔥 |
-p, --parents
|
親ディレクトリが存在しない場合はまとめて作成 |
| 📝 |
-m, --mode
|
作成時のパーミッションを指定 |
mkdir -p project/src/components # 中間ディレクトリごと一気に作成
mkdir -m 700 secret_dir # パーミッションを指定して作成
rm - 削除
| 頻度 |
オプション |
説明 |
| 🔥 |
-r, --recursive
|
ディレクトリを中身ごと再帰的に削除 |
| 🔥 |
-f, --force
|
確認なし・存在しなくてもエラーにせず削除 |
| ⭐ |
-i |
削除前に1件ずつ確認(-fと真逆。危険な操作の前に安全策として) |
| ⭐ |
-v, --verbose
|
削除したファイル名を表示 |
rm -rfは取り消せません。特にsudo rm -rf /pathはパス指定ミスに注意してください。
cp - コピー
| 頻度 |
オプション |
説明 |
| 🔥 |
-r, -R, --recursive
|
ディレクトリを再帰的にコピー |
| ⭐ |
-p, --preserve
|
パーミッション・所有者・タイムスタンプを保持してコピー |
| ⭐ |
-v, --verbose
|
コピーしたファイル名を表示 |
| ⭐ |
-i, --interactive
|
上書き前に確認 |
| ⭐ |
-u, --update
|
コピー先より新しい場合のみ上書き |
| 📝 |
-a, --archive
|
-r -p等を含む、属性を完全に保持するコピー(バックアップ向け) |
mv - 移動・リネーム
| 頻度 |
オプション |
説明 |
| ⭐ |
-i, --interactive
|
上書き前に確認 |
| ⭐ |
-v, --verbose
|
移動したファイル名を表示 |
| 📝 |
-n, --no-clobber
|
既存ファイルがあれば上書きしない |
find - ファイル検索
| 頻度 |
オプション |
説明 |
| 🔥 |
-name "pattern" |
ファイル名で検索(大文字小文字区別) |
| 🔥 |
-type f / -type d
|
ファイル/ディレクトリのみに絞る |
| ⭐ |
-iname "pattern" |
大文字小文字を区別せずファイル名検索 |
| ⭐ |
-mtime -7 |
7日以内に更新されたファイルを検索(+7なら7日より前) |
| ⭐ |
-size +100M |
サイズが100MBより大きいファイルを検索 |
| ⭐ |
-exec <cmd> {} \; |
検索結果に対してコマンドを実行 |
| 📝 |
-maxdepth N |
検索する階層の深さを制限 |
| 📝 |
-not / !
|
条件を否定 |
find . -type f -name "*.log" -mtime +30 -exec rm {} \; # 30日以上前のログを削除
find / -type d -name "node_modules" -maxdepth 5 # 5階層までnode_modulesを探す
tar - アーカイブ
| 頻度 |
オプション |
説明 |
| 🔥 |
-c, --create
|
アーカイブを新規作成 |
| 🔥 |
-x, --extract
|
アーカイブを展開 |
| 🔥 |
-z, --gzip
|
gzip圧縮・展開(.tar.gz) |
| 🔥 |
-v, --verbose
|
処理内容を表示 |
| 🔥 |
-f, --file
|
対象ファイル名を指定(基本的に必須・オプションの最後に置く) |
| ⭐ |
-j, --bzip2
|
bzip2圧縮・展開(.tar.bz2) |
| ⭐ |
-C <dir> |
展開先ディレクトリを指定 |
| ⭐ |
-t, --list
|
中身を確認(展開せずに一覧表示) |
tar -czvf archive.tar.gz ./target_dir # 圧縮しながらアーカイブ作成
tar -xzvf archive.tar.gz -C /path/to/dest # 指定ディレクトリへ展開
tar -tzvf archive.tar.gz # 展開せず中身を確認
ファイルの中身を見る・編集する
grep - 文字列検索
| 頻度 |
オプション |
説明 |
| 🔥 |
-i, --ignore-case
|
大文字小文字を区別しない |
| 🔥 |
-r, -R, --recursive
|
ディレクトリを再帰的に検索 |
| 🔥 |
-n, --line-number
|
マッチした行番号を表示 |
| 🔥 |
-v, --invert-match
|
マッチしない行を表示(除外検索) |
| ⭐ |
-c, --count
|
マッチした行数のみ表示 |
| ⭐ |
-l, --files-with-matches
|
マッチしたファイル名のみ表示 |
| ⭐ |
-A N / -B N / -C N
|
マッチ行の後(After)/前(Before)/前後(Context)N行も表示 |
| ⭐ |
-E, --extended-regexp
|
拡張正規表現を使用(egrep相当) |
| ⭐ |
-w, --word-regexp
|
単語単位で完全一致検索 |
| 📝 |
--color=auto |
マッチ箇所を色付け表示 |
grep -rn "TODO" ./src # ソース内のTODOコメントを行番号付きで検索
grep -i "error" app.log | wc -l # エラーログの件数をカウント
grep -A 3 "Exception" app.log # 例外発生行の後3行も含めて表示
tail / head - 先頭・末尾表示
| 頻度 |
オプション |
説明 |
| 🔥 |
-n N |
先頭/末尾からN行を表示 |
| 🔥 |
-f, --follow (tailのみ) |
ファイルの追記をリアルタイムに表示(ログ監視の定番) |
| ⭐ |
-c N |
バイト数指定で表示 |
tail -f -n 100 /var/log/app.log # 直近100行を表示しつつ追記を監視
sed - ストリームエディタ
| 頻度 |
オプション |
説明 |
| 🔥 |
-i |
ファイルを直接置換(バックアップ作成は-i.bak) |
| 🔥 |
s/検索文字列/置換文字列/g |
文字列置換(gは行内すべてを置換) |
| ⭐ |
-e |
複数の置換コマンドを1回の呼び出しでまとめて実行 |
| ⭐ |
-n + p
|
自動出力を無効化し、明示的に指定した行のみ出力 |
sed -i.bak 's/foo/bar/g' file.txt # foo→barに置換、元ファイルはfile.txt.bakとして保持
sed -n '10,20p' file.txt # 10〜20行目のみ表示
sort / uniq
| 頻度 |
オプション |
説明 |
| 🔥 |
-n, --numeric-sort (sort) |
数値としてソート |
| 🔥 |
-r, --reverse (sort) |
降順ソート |
| ⭐ |
-k N (sort) |
N番目のフィールドを基準にソート |
| ⭐ |
-u, --unique (sort) |
ソートと同時に重複除去 |
| ⭐ |
-c, --count (uniq) |
重複行数を表示 |
sort -k2 -n access.log | uniq -c | sort -rn # 2列目を数値としてソート→件数集計→多い順
wc - カウント
| 頻度 |
オプション |
説明 |
| 🔥 |
-l, --lines
|
行数のみ表示 |
| ⭐ |
-w, --words
|
単語数のみ表示 |
| ⭐ |
-c, --bytes
|
バイト数のみ表示 |
権限・所有者
chmod - パーミッション変更
| 頻度 |
記法 |
説明 |
| 🔥 |
755 / 644 などの数値指定 |
所有者/グループ/その他の権限を8進数で一括指定(読4+書2+実行1) |
| 🔥 |
-R, --recursive
|
ディレクトリ配下を再帰的に変更 |
| ⭐ |
u+x / g-w / o=r などシンボル指定 |
特定の対象(u:所有者, g:グループ, o:その他)に権限を追加/削除/設定 |
| ⭐ |
+x |
実行権限のみ付与(スクリプト実行時によく使う) |
chmod 755 deploy.sh # 所有者:rwx、グループ・その他:r-x
chmod -R 644 ./configs # 配下のファイルをすべて読み書きのみに
chmod u+x script.sh # 所有者にのみ実行権限を追加
chown - 所有者変更
| 頻度 |
オプション |
説明 |
| 🔥 |
user:group 形式 |
所有者とグループを同時に指定 |
| 🔥 |
-R, --recursive
|
ディレクトリ配下を再帰的に変更 |
chown -R deploy:deploy /var/www/app # アプリのファイル一式の所有者をdeployユーザーに
プロセス・システム管理
ps - プロセス確認
| 頻度 |
オプション |
説明 |
| 🔥 |
aux |
全ユーザーの全プロセスを詳細表示(BSDスタイル・最頻出) |
| ⭐ |
-ef |
全プロセスを表示(UNIX標準スタイル。auxとほぼ同義で好みで使い分け) |
| ⭐ |
--sort=-%cpu / --sort=-%mem
|
CPU/メモリ使用率順にソート |
ps aux | grep nginx # nginxプロセスを検索
ps aux --sort=-%mem | head -10 # メモリ使用量が多いプロセストップ10
kill - プロセス終了
| 頻度 |
シグナル |
説明 |
| 🔥 |
-9, SIGKILL
|
強制終了(即座に・後処理なし) |
| 🔥 |
-15, SIGTERM
|
通常の終了要求(デフォルト。後処理の猶予あり。まずはこちらを試す) |
| ⭐ |
-1, SIGHUP
|
設定再読み込みを促す(デーモンプロセスに対して) |
| ⭐ |
-l |
利用可能なシグナル一覧を表示 |
kill -15 1234 # まずは正常終了を試みる
kill -9 1234 # 反応がない場合の強制終了
df / du - ディスク使用量
| 頻度 |
オプション |
説明 |
| 🔥 |
-h, --human-readable
|
サイズをKB/MB/GB単位で表示 |
| ⭐ |
-s, --summarize (duのみ) |
合計サイズのみ表示(サブディレクトリの内訳を省略) |
| ⭐ |
-a, --all (duのみ) |
ファイル単位でもサイズを表示 |
| 📝 |
-T, --print-type (dfのみ) |
ファイルシステムの種類も表示 |
df -h # マウントごとのディスク使用状況
du -sh ./* | sort -rh # カレント直下の各ディレクトリ・ファイルのサイズを大きい順に
systemctl - サービス管理
| 頻度 |
サブコマンド |
説明 |
| 🔥 |
status <service> |
サービスの稼働状況を確認 |
| 🔥 |
start / stop / restart
|
サービスの起動・停止・再起動 |
| 🔥 |
enable / disable
|
起動時の自動起動を有効化・無効化 |
| ⭐ |
reload |
設定ファイルのみ再読み込み(プロセス再起動なし) |
| ⭐ |
is-active / is-enabled
|
状態をスクリプト等で判定しやすい形式で確認 |
journalctl - ログ確認
| 頻度 |
オプション |
説明 |
| 🔥 |
-u <service> |
指定サービスのログのみ表示 |
| 🔥 |
-f, --follow
|
リアルタイムでログを追跡 |
| ⭐ |
-n N |
直近N行のみ表示 |
| ⭐ |
--since / --until
|
期間を指定して絞り込み |
journalctl -u nginx -f --since "10 min ago" # 直近10分からのnginxログを追跡
ネットワーク
curl - HTTPリクエスト
| 頻度 |
オプション |
説明 |
| 🔥 |
-I, --head
|
レスポンスヘッダーのみ取得(疎通確認に便利) |
| 🔥 |
-X <METHOD> |
HTTPメソッドを指定(GET/POST/PUT/DELETE等) |
| 🔥 |
-H "Header: value" |
リクエストヘッダーを追加 |
| 🔥 |
-d, --data
|
リクエストボディを送信(POST等) |
| ⭐ |
-o <file> |
レスポンスをファイルに保存 |
| ⭐ |
-L, --location
|
リダイレクトを自動で追跡 |
| ⭐ |
-s, --silent
|
プログレス表示を抑制 |
| ⭐ |
-v, --verbose
|
通信内容を詳細表示(デバッグ用) |
| 📝 |
-k, --insecure
|
SSL証明書の検証をスキップ(検証・開発環境限定) |
curl -X POST -H "Content-Type: application/json" -d '{"name":"foo"}' https://api.example.com/users
curl -sL -o output.html https://example.com # サイレント+リダイレクト追従で保存
ssh - リモート接続
| 頻度 |
オプション |
説明 |
| 🔥 |
-i <key> |
秘密鍵ファイルを指定 |
| 🔥 |
-p <port> |
接続ポートを指定 |
| ⭐ |
-L local:host:remote |
ローカルポートフォワーディング |
| ⭐ |
-v |
接続時の詳細ログを表示(接続トラブル調査) |
ssh -i ~/.ssh/id_rsa -p 2222 user@server
rsync - 同期
| 頻度 |
オプション |
説明 |
| 🔥 |
-a, --archive
|
パーミッション等を保持した再帰的コピー(定番の組み合わせ) |
| 🔥 |
-v, --verbose
|
転送内容を表示 |
| 🔥 |
-z, --compress
|
転送時にデータを圧縮 |
| ⭐ |
--delete |
転送先にのみ存在するファイルを削除して完全同期 |
| ⭐ |
-n, --dry-run
|
実際には転送せず、実行結果だけ確認 |
| ⭐ |
-e "ssh -p port" |
使用するリモートシェルを指定 |
rsync -avz --dry-run src/ user@server:/dst/ # まずはドライランで差分確認
rsync -avz --delete src/ user@server:/dst/ # 完全同期(削除も反映)
パッケージ管理
apt (Debian/Ubuntu)
| 頻度 |
サブコマンド/オプション |
説明 |
| 🔥 |
update |
パッケージ一覧を最新化(実際のインストールは行わない) |
| 🔥 |
upgrade |
インストール済みパッケージを更新 |
| 🔥 |
install -y <pkg> |
パッケージをインストール(-yで確認をスキップ) |
| ⭐ |
remove / purge
|
パッケージを削除(purgeは設定ファイルも削除) |
| ⭐ |
search <keyword> |
パッケージを検索 |
| 📝 |
autoremove |
不要になった依存パッケージを削除 |
まとめ
コマンド自体は覚えていても、オプションを知らないと本来の力を発揮できません。特に🔥マークのオプションは「そのコマンドを使う理由そのもの」であることが多いので、セットで覚えておくのがおすすめです。