概要
- 優れたエンジニアでも、非効率なターミナル操作に陥りがち
- POSIX互換シェルで使える便利なショートカットやコマンドを紹介
- Bash/Zsh限定の快適機能も網羅
- 作業効率を劇的に向上させるテクニック集
- 日常的に一つずつ習得することを推奨
ターミナル操作の非効率とその解決策
- エンジニア でも、行頭のタイプミス修正時に Backspace長押し をしがち
- ls, cd, grep など基本コマンドを覚えた後、効率化を怠る傾向
- ターミナルは「住まい」だが、 家具の配置換え (効率化)をしない現状
ほぼ全てのPOSIX系シェルで使える基本テクニック
- Emacs風ショートカット (Readline対応シェルで標準)
- CTRL + W :カーソル直前の単語を即削除
- CTRL + U/K :行頭/行末まで一気にカット、 CTRL + Y で再貼り付け
- CTRL + A/E :行頭/行末に瞬間移動
- ALT + B/F :単語単位で前後移動(MacはOptionキー設定要)
- reset (または stty sane):バイナリファイルcat後のターミナル復旧
- CTRL + C :コマンド即中断
- CTRL + D :EOF送信、空行でシェル終了に注意
- CTRL + L :画面クリア、入力中コマンドはそのまま
- cd - :直前のディレクトリに即戻り
- pushd/popd :複数ディレクトリのスタック管理
- > file.txt :ファイル内容を即空に、パーミッション等維持
- $_ :直前コマンドの最終引数展開、パス再利用に便利
- set -e/-u :スクリプトのエラー時即終了、未定義変数利用時エラー
Bash/Zsh限定の快適ショートカット集
- CTRL + R :履歴から逆検索、キーワード入力で過去コマンドを即呼び出し
- !! :直前コマンド全文展開、sudo !!で「権限昇格リトライ」
- CTRL + X, CTRL + E :現在のコマンドラインをエディタで編集&即実行
- fc :$EDITORで直前コマンドを編集、BashやZsh以外でも利用可
- ESC + .(ALT + .) :直前コマンドの最後の引数を挿入、連打でさらに遡れる
- !$ :直前コマンドの最後の引数を即展開(入力時編集不可)
- 中括弧展開(brace expansion)
- cp pf.conf{,.bak} :バックアップファイルの一発作成
- mv filename.{txt,md} :拡張子変更を一瞬で
- mkdir -p project/{src,tests,docs} :複数ディレクトリ同時作成
- プロセス置換(process substitution)
- diff <(sort file1.txt) <(sort file2.txt) :一時ファイル不要の比較
- グロブスター(globstar)
- shopt -s globstar で **ls ** /*.js:再帰的なファイル検索が簡単に
- バックグラウンド&切り離し
- CTRL + Z で一時停止、 bg でバックグラウンド化、 disown でターミナルから切り離し
- |& tee file.log
- 標準出力・標準エラー出力を同時に画面表示&ログ保存
ターミナル習熟のすすめ
- シェルは 障害物競走 ではなく 道具箱
- 全てを一度に覚える必要なし、 一つずつ習得 して習慣化
- ターミナルの「家具」を 自分好みに配置 して快適作業環境の構築