リファレンス
便利技・ショートカット・時短術
ターミナル作業が一気に速くなる「知っていれば得する」技を目的別にまとめました。キー操作・履歴・エイリアス・パイプの合わせ技・SSH設定など、覚えた順に効いてきます。コマンドそのものは 📓 Linux・macOSのページで引いてください。
時短術は数が多いので、全部覚える必要はありません。まずは Ctrl+R(履歴検索)、!!(直前コマンド)、エイリアス1〜2個から。1日に何度も使う操作ほど、投資が早く回収できます。
キーボードショートカット
行の中を移動・削除するキー操作。マウスや矢印キー連打から卒業できます(多くはEmacs流の操作)。
| キー | 意味・用途 |
|---|---|
Ctrl+A / Ctrl+E | カーソルを行頭(A)/行末(E)へ一気に移動 |
Ctrl+U / Ctrl+K | カーソルより前(U)/後ろ(K)をまとめて削除 |
Ctrl+W | カーソル手前の1単語を削除。打ち間違いの修正に |
Ctrl+R | コマンド履歴をインクリメンタル検索。最強の時短 |
Ctrl+C | 実行中のコマンドを中断(キャンセル) |
Ctrl+D | 入力の終わり。空行で押すとログアウト/シェル終了 |
Ctrl+L | 画面をクリア(clearと同じ。履歴は消えない) |
Ctrl+Z | 実行中の処理を一時停止(バックグラウンドへ送る前段) |
Tab | 入力補完。ファイル名・コマンド名を自動で埋める。2回押しで候補一覧 |
履歴の活用
「さっき打ったあれ」をゼロから打ち直さないための機能です。
| コマンド・記号 | 意味・用途 |
|---|---|
history | 過去のコマンド一覧を番号付きで表示。history | grep 語で絞り込み |
!! | 直前のコマンドをそのまま再実行 |
sudo !! | 「権限が足りない」と言われたとき、直前コマンドをsudo付きでやり直す定番技 |
!$ | 直前コマンドの最後の引数を再利用。例 mkdir foo の後 cd !$ |
!番号 | historyで見た番号のコマンドを再実行。例 !142 |
!語 | その語で始まる直近のコマンドを実行。例 !git |
Ctrl+R | 履歴を対話検索。打つほど候補が絞れる。もう一度 Ctrl+Rで次の候補 |
エイリアスで時短
長い・よく打つコマンドに短い別名を付けます。.bashrc / .zshrc に書けば毎回有効に。
| 設定例 | 意味・用途 |
|---|---|
alias ll='ls -la' | llで詳細一覧。定番中の定番 |
alias la='ls -A' | 隠しファイルも含めた一覧(...を除く) |
alias ..='cd ..' | 1つ上の階層へ。alias ...='cd ../..'も便利 |
alias gs='git status' | よく打つgitコマンドを短縮 |
alias grep='grep --color=auto' | 常に色付きに。既定オプションの上書きにも使える |
# ~/.bashrc または ~/.zshrc の末尾に追記して保存
alias ll='ls -la'
alias ..='cd ..'
# 追記後は再読み込みで即反映(ターミナルを開き直してもOK)
$ source ~/.bashrc
bashなら ~/.bashrc、zsh(macOSの標準)なら ~/.zshrc に書きます。今使っているシェルは echo $SHELL で確認できます。書いた直後は source ファイル名 で読み直すとすぐ効きます。
ディレクトリ移動の技
行ったり来たりを速く。「戻る」を武器にしましょう。
| コマンド | 意味・用途 |
|---|---|
cd - | 直前にいたディレクトリへ一発で戻る。2か所を往復するときに最強 |
cd ~ / cd | ホームディレクトリへ。~はホームを表す記号 |
cd ~/プロジェクト | ~を使えばどこからでもホーム基準の絶対パスで移動できる |
pushd ディレクトリ | 今の場所を記憶しつつ移動(スタックに積む) |
popd | pushdで積んだ場所へ戻る。深い階層を渡り歩くときに便利 |
パイプの合わせ技
小さな道具を | でつなぐと、集計や件数確認が一行で終わります。UNIX思想の真骨頂。
| 合わせ技 | 意味・用途 |
|---|---|
sort | uniq -c | sort -rn | 頻度集計。並べて→数えて→多い順に。ログ分析の万能パターン |
grep 語 ファイル | wc -l | 語が何行あるかを件数で。エラー数のカウントなどに |
... | head / ... | tail | 結果の先頭/末尾だけに絞る。長い出力を切り詰める |
find . -name "*.log" | xargs rm | 見つけた各ファイルを引数にして次のコマンドへ。xargsで一括処理 |
... | xargs -I{} cp {} /backup/ | -I{}で位置を指定し、1件ずつ差し込んで実行 |
# アクセスログからIPを取り出し、多い順TOP5を集計
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -5
512 203.0.113.9
340 192.168.1.20
87 198.51.100.5
# ERRORを含む行の件数だけ知りたい
$ grep "ERROR" app.log | wc -l
23
コマンドをつなぐ
複数のコマンドを1行で。条件付き実行を使うと、失敗時に止める安全な連結ができます。
| 記号 | 意味・用途 |
|---|---|
A && B | Aが成功したときだけBを実行。例 make && make install |
A || B | Aが失敗したときだけBを実行。例 ping -c1 host || echo NG |
A ; B | 成否に関係なく順番に両方実行 |
A & | Aをバックグラウンドで実行し、すぐ次の入力に戻る |
A && B || C | 成功ならB、失敗ならC。簡単な分岐に。例 test -f f && echo OK || echo NG |
SSHを快適に
毎回ホスト名やユーザーを打つのは手間。~/.ssh/config に書けば短い名前で接続できます。
| コマンド | 意味・用途 |
|---|---|
ssh web1 | configで別名を定義すれば、この短さで接続できる(下の設定例参照) |
ssh-keygen -t ed25519 | 鍵ペアを作成。パスワードより安全な鍵認証の第一歩 |
ssh-copy-id web1 | 公開鍵をサーバーに登録。以降パスワード入力なしで入れる |
scp file web1:/tmp/ | ファイルを転送。configの別名がそのまま使える |
rsync -avz 元 web1:先 | 差分だけ効率よく同期。大量ファイルやバックアップに(-a属性保持 -z圧縮) |
# ~/.ssh/config に書いておく設定例
Host web1
HostName 203.0.113.10
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
# これで「ssh web1」だけで deploy@203.0.113.10 に鍵認証で接続できる
鍵認証や公開鍵暗号の考え方は、コンピュータ大全コース第11章で扱っています。「なぜ鍵のほうがパスワードより安全なのか」が腑に落ちると、設定の意味も見えてきます。
ターミナルの多重化(tmux / screen)
1つの画面で複数の作業を並行でき、しかも接続が切れても中の作業が生き残るのが最大の利点。長時間処理やリモート作業の必需品です。
| コマンド・操作 | 意味・用途 |
|---|---|
tmux | 新しいセッションを開始。この中で作業する |
Ctrl+B → D | セッションから切り離す(デタッチ)。作業は裏で動き続ける |
tmux ls | 動いているセッションの一覧を表示 |
tmux attach | 切り離したセッションに再接続。続きから作業できる |
Ctrl+B → C / % / " | 新ウィンドウ(C)/左右分割(%)/上下分割(")。画面を分けて並行作業 |
screen / screen -r | tmuxの前からある同種ツール。開始/再接続。環境に応じて使い分け |
リモートで長い処理を走らせるときは、先に tmux に入ってから始めましょう。回線が切れても処理は中で生き続け、tmux attach で戻れます。nohup でも似たことはできますが、対話的に見守れる tmux は運用でとくに重宝します。
安全のための技
速さと同じくらい大事なのが「取り返しのつく」作業。ひと手間で事故を減らせます。
| 技 | 意味・用途 |
|---|---|
ls で確認してから rm | 削除の前に、同じパターンを ls で当ててみて対象を目視。ワイルドカードの事故を防ぐ |
rm -i ファイル | 1件ずつ確認しながら削除。重要な場所での定番 |
cp -i 元 先 | 上書きの前に確認。cp --backup 元 先で既存をバックアップして上書き |
alias rm='rm -i' | 常に確認付きに。ただし後述の注意も(過信は禁物) |
コマンド || true | 失敗しても処理全体を止めたくないとき、あえて成功扱いにする(スクリプトで) |
確認付きにするのは有効ですが、「自分の環境では毎回聞かれる」ことに慣れてしまうのが落とし穴です。別のマシンやスクリプト内ではエイリアスが効かず、確認なしで消えます。エイリアスはお守りと考え、根本は「実行前に ls で対象を確かめる」習慣で守りましょう。危険なコマンドを別名で隠して安心するのは逆効果です。
その他の時短
知っていると差がつく小技を最後にまとめて。
| コマンド・記法 | 意味・用途 |
|---|---|
echo {1..10} | ブレース展開。1 2 ... 10に展開。mkdir day{01..31}で連番ディレクトリを一括作成 |
cp file{,.bak} | ブレース展開の応用。cp file file.bakと同じ。手早くバックアップ |
watch -n 2 コマンド | 2秒ごとに繰り返し実行して変化を監視。例 watch -n 2 df -h |
time コマンド | コマンドの実行にかかった時間を計測。性能比較に |
コマンド > out.txt 2>&1 | 結果もエラーもまとめてファイルへ(記号の意味は 📓 Linuxページ参照) |
man コマンド / コマンド --help | 使い方を調べる基本。迷ったらまずここ。man内は /語で検索 |
時短術は強力ですが、「速さ」と「安全」はときに逆を向きます。まず、危険をエイリアスで隠さないこと。alias rm='rm -rf' のように確認を省く別名は、事故を一発で招きます。省くなら「確認を足す方向(-i)」に。次に、コピペ実行の前に理解を。ネットで見つけた | や && でつながった長い一行や、curl ... | bash のような「取得してそのまま実行」は、中身を読まずに走らせると何をされるか分かりません。実行前に一度 less や echo で展開結果を確かめる、&& で不可逆な操作を安易につながない、といった小さな慎重さが身を守ります。便利技は「速く・かつ元に戻せる」形で使うのが、実務での正しい速さです(コンピュータ大全コース第6章・第7章)。