Linux シェル コマンドチートシート
日常的に使う Linux / macOS のシェル コマンドを素早く参照:ファイル操作、テキスト処理、パーミッション、プロセス、ネットワーク、アーカイブ、ストレージ — よく使うオプションと実用例をまとめました。
40 コマンド
ファイル / 移動
pwd現在の作業ディレクトリの絶対パスを表示します。
pwdlsディレクトリの内容を一覧表示します。
-l 詳細形式; -a 隠しファイルを含める; -h 人間に読みやすいサイズ; -t 更新時刻順; -r 逆順
ls -lah /var/logcd <dir>現在の作業ディレクトリを変更します。
cd ~/-projects/app && pwdtree <dir>ディレクトリをツリー表示;概観把握に便利(要インストール)。
-L <n> 最大深さ; -a 隠しファイル表示; -d ディレクトリのみ; -I パターン
tree -L 2 -I 'node_modules|.git' .ファイル操作
mkdir -p <dir>(存在しない親ディレクトリを含め)ディレクトリを一度に作成します。
-p 親ディレクトリも作成; -v 詳細; -m <mode> パーミッション設定
mkdir -p src/components/uicp <src> <dest>ファイル / ディレクトリをコピーします。
-r 再帰(ディレクトリ用); -i 対話; -v 詳細; -p モード / 時刻を保持
cp -rv src/ backup/mv <src> <dest>ファイル / ディレクトリを移動(リネーム)します。
-i 対話; -v 詳細; -n 上書きしない
mv README.md readme.md && mv ../tmp .rm <path>ファイル / ディレクトリを削除します。⚠️ ゴミ箱はありません — パスを再確認。
-r 再帰; -f 強制; -i 対話; -v 詳細
rm -rf build/ node_modules/ln -s <target> <link><link> から <target> を指すシンボリック リンクを作成します。
-s シンボリック(既定はハード); -f 既存を上書き; -n 既存のリンクを追わない
ln -s /opt/app-v2 currenttouch <file>空のファイルを作成、または内容を変えずに mtime を更新します。
touch .gitignoreテキスト / 表示
cat <file>ファイル全内容を stdout に出力します。
-n 行番号; -A 非表示文字を表示; -s 連続空行を 1 行に
cat -n package.jsonless <file>ページャでファイルを開く(/、n、N で検索、q で終了)。
-N 行番号; -S 折り返しなし; +F tail 風自動追跡
less -NS /var/log/sysloghead -n 10 <file>ファイルの先頭 N 行(既定 10)を出力します。
head -n 30 /etc/passwdtail -n 50 -f <file>末尾 N 行を表示し、追記をフォローします(ログ向け)。
-f フォロー; -F フォロー + 再試行; -n 行数(既定 10); -c バイト; --pid=PID 指定 PID 終了で停止
tail -f -n 50 /var/log/nginx/access.log検索 / フィルタ
grep <pattern> <files>パターンに一致する行を検索;拡張 / PCRE 正規表現に対応。
-i 大文字小文字無視; -r 再帰; -n 行番号; -v 否定; -E 拡張正規表現
grep -rni "TODO" src/find <path> -name <pattern>ディレクトリ ツリーを走査し、条件に一致するファイルを列挙します。
-type f|d; -name グロブ; -iname 大文字小文字無視; -size +1M; -mtime -7; -maxdepth
find . -type f -name "*.log" -mtime +7 -deleteawk '<prog>' <file>パターン + アクションのテキスト スキャナ — 列抽出、合計算出など。
-F fs フィールド区切り; -v var=value; -f スクリプト ファイル
awk -F'\t' 'NR>1 {sum+=$3} END {print sum}' data.tsvsed 's/<a>/<b>/' <file>ストリーム エディタ — 行単位の置換、削除、挿入。
-i インプレース; -E 拡張正規表現; -e 式を連結; s/from/to/[g] [p]
sed -i '' 's/version = "1\.."/version = "1.9"/' pyproject.tomlsort | uniq -c | sort -nrパイプライン イディオム:出現回数を集計し頻度降順でソート。
awk '{print $1}' access.log | sort | uniq -c | sort -nr | headパーミッション
chmod <mode> <file>ファイル パーミッションを変更(例:755、u+x、g-w、o=r)。
-R 再帰; --reference=<file> パーミッションをコピー
chmod -R u=rwX,go=r ./docschown <user>[:<group>] <file>ファイルの所有者 / グループを変更します。
-R 再帰; -h シンボリック リンク自体を変更(-R と併用)
chown -R www-data:www-data /var/www/htmlumask新規ファイル作成時のデフォルト パーミッション マスクを表示 / 設定。
-S 記号形式; -p umask をそのまま移植性高く保持
umask 022プロセス / システム
ps aux詳細情報付きで全プロセスを表示(BSD スタイル列)。
-e 全件; -f フル; -L スレッド; --sort=-%mem
ps auxf | grep -v grep | grep nginxtop / htop対話型のライブ プロセス ビューア(htop は UI が改善、別途要インストール)。
P/CPU M/MEM ソート; k kill; r renice; q quit
htop -u www-datakill [-9|<sig>] <pid>プロセスにシグナルを送信。SIGTERM(15)が丁寧、SIGKILL(9)が強制。
-9 SIGKILL; -l シグナル一覧; -s シグナル名指定
kill -TERM 12345 && sleep 2 && kill -9 12345jobs / bg / fg / nohupジョブ制御 — 一覧 / バックグラウンド / フォアグラウンド / ハングアップ免疫で実行。
nohup ./long-task.sh > out.log 2>&1 &systemctl <verb> <unit>systemd サービス / ユニットを制御(status、start、stop、enable、logs など)。
status / start / stop / restart / enable / disable; -u <user>
systemctl status nginx && systemctl reload nginxネットワーク
wget <url>非対話型ダウンローダ;再帰 / ミラーが容易。
-c 続行; -q 無音; --no-check-certificate; -r 再帰
wget -c https://example.com/big-archive.tar.gzssh <user>@<host> [cmd]リモート ホストで SSH セッションを開く、または単発コマンドを実行。
-p <port>; -i <key>; -L / -R / -D ポート転送; -N リモート コマンドなし; -f バックグラウンド
ssh -i ~/.ssh/id_ed25519 user@host 'sudo systemctl restart nginx'scp / rsyncリモート ホストとファイルを送受信。rsync は部分 / 反復転送が高速。
scp -r / rsync -avz --progress src/ user@host:/dst/
rsync -avz --progress ./build/ deploy@server:/srv/app/ping / traceroute / ss到達性、経路、リスニング ソケットを診断します。
ping -c N カウント; ss -tulnp リスニング情報; ss -s サマリ
ss -tulnp | grep -E ':80|:443'アーカイブ / 圧縮
tar -czf out.tgz <paths>tar アーカイブを作成 / 展開。任意で gzip / bzip2 / xz。
-c 作成; -x 展開; -t 一覧; -z gzip; -j bzip2; -J xz; -v 詳細; -C <dir>
tar -czf - src/ | ssh server 'tar -xzf - -C /srv/app'zip -r out.zip <paths>zip アーカイブを再帰的に作成します。
-r 再帰; -9 最大圧縮; -e 暗号化; -j パス保存なし
zip -r9 build-$(date +%Y%m%d).zip dist/unzip [-d <dir>] file.zipzip アーカイブを任意のディレクトリに展開します。
-d 展開先; -o 上書き; -l 一覧; -p stdout; -q 無音
unzip -o build.zip -d ./extractedディスク / ストレージ
df -hマウント済みファイル システムのディスク使用量を人間に読みやすく表示。
-h 人間に読みやすい; -T FS 種別も表示; -i i ノード
df -hT /du -sh <path>ファイル / ディレクトリのディスク使用量を推定;-s でディレクトリを集約。
-s 集約; -h 人間に読みやすい; -a 全件; --max-depth=N; -x 1 FS に限定
du -sh node_modules/ build/ .シェル組み込み
history / !! / !$以前実行したコマンドを参照 / 再生 / 再利用します。
history N; !<n> で N 行目を再実行; !$ で直前コマンドの最終引数; !! で直前コマンドを再実行
git add . && git commit -m "$(!!)"alias / unaliasシェル コマンドのショートカットを定義 / 一覧(多くは ~/.bashrc / ~/.zshrc に記述)。
alias ll='ls -lah' && alias gs='git status'env / export / unset子プロセス向けの環境変数を一覧 / 設定 / 解除します。
export DATABASE_URL=postgres://localhost/dev && env | grep DATABASEヘルプ
man <cmd> / <cmd> --helpマニュアル ページ(man)、またはコマンド組み込みのヘルプを表示します。
man -k キーワード検索; man -t <cmd> PDF 印刷; --help 簡易使用法
man -k 'tar archive'チートシート バージョン 1.0.0
bash 5+ / POSIX 2017 に対応