カーソル移動 🧭
コマンドライン上でのカーソル移動をスムーズに行うためのショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + a |
行頭へ移動します。 | Home キーと同じ動作です。長いコマンドの先頭に戻りたいときに便利です。 |
Ctrl + e |
行末へ移動します。 | End キーと同じ動作です。コマンドの最後に何かを追加したい場合に役立ちます。 |
Ctrl + f |
カーソルを1文字右(前方)へ移動します。 | → (右矢印) キーと同じ動作です。 |
Ctrl + b |
カーソルを1文字左(後方)へ移動します。 | ← (左矢印) キーと同じ動作です。 |
Alt + f |
カーソルを1単語右(前方)へ移動します。 | 単語はスペースや記号で区切られます。オプションや引数の単位で移動したいときに便利です。macOS のターミナルでは Esc を押してから f を押す、またはターミナルの設定変更が必要な場合があります。 |
Alt + b |
カーソルを1単語左(後方)へ移動します。 | 同様に単語単位で移動します。macOS のターミナルでは Esc を押してから b を押す、またはターミナルの設定変更が必要な場合があります。 |
Ctrl + xx |
カーソルを行頭と現在のカーソル位置の間で交互に移動します。 | Ctrl+x を素早く2回押します。行頭で少し編集して元の位置に戻りたい場合などに使えます。 |
テキスト編集 ✍️
コマンドラインの文字列を効率的に編集するためのショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + d |
カーソル位置の1文字を削除します。 | Delete キーと同じ動作です。行が空の場合はシェルを終了します(ログアウト)。 |
Ctrl + h |
カーソルの左(後方)の1文字を削除します。 | Backspace キーと同じ動作です。 |
Alt + d |
カーソル位置から現在の単語の終わりまでを削除(カット)します。 | 削除されたテキストはキルリングに保存されます。macOS では Esc + d の場合もあります。 |
Ctrl + w |
カーソル位置から前のスペースまでの単語を削除(カット)します。 | 削除されたテキストはキルリングに保存されます。引数を間違えた時などに便利です。 |
Alt + Backspace |
カーソル位置から現在の単語の先頭までを削除(カット)します。 | Ctrl+w と似ていますが、カーソル位置から単語の始まりに向かって削除します。macOS では Esc + Backspace や設定変更が必要な場合があります。 |
Ctrl + k |
カーソル位置から行末までを削除(カット)します。 | 削除されたテキストはキルリングに保存されます。コマンドの後半部分を書き直したい場合に便利です。 |
Ctrl + u |
カーソル位置から行頭までを削除(カット)します。 | 削除されたテキストはキルリングに保存されます。コマンド全体を書き直したい場合に、行頭に移動してから実行すると便利です。 |
Ctrl + y |
最後にカット(キル)したテキストをカーソル位置に貼り付け(ヤンク)ます。 | キルリングと呼ばれるバッファからテキストをペーストします。Ctrl+k や Ctrl+u などでカットした内容を貼り付けられます。 |
Alt + y |
Ctrl+y の直後に実行すると、キルリング内の以前のテキストを貼り付けます。 |
連続して押すことで、過去にカットしたテキストを順番に呼び出して貼り付けることができます。macOS では Esc + y の場合もあります。 |
Ctrl + t |
カーソル位置の文字と前の文字を入れ替えます。 | タイプミス(例: `sl` を `ls` に修正)などに使えます。カーソルが行末にある場合は、最後の2文字を入れ替えます。 |
Alt + t |
カーソル位置の単語と前の単語を入れ替えます。 | 単語の順序を間違えた場合に便利です。macOS では Esc + t の場合もあります。 |
Alt + u |
カーソル位置から現在の単語の終わりまでを大文字に変換します。 | macOS では Esc + u の場合もあります。 |
Alt + l |
カーソル位置から現在の単語の終わりまでを小文字に変換します。 | macOS では Esc + l の場合もあります。 |
Alt + c |
カーソル位置の文字、またはカーソルが単語の先頭にある場合は単語の先頭の文字を大文字に変換(キャピタライズ)します。 | macOS では Esc + c の場合もあります。 |
Ctrl + _ |
直前の編集操作を取り消します(アンドゥ)。 | Ctrl + / や Ctrl + x の後に u でも機能することがあります。複数回実行して、複数の操作を取り消せます。 |
キルリング:
Ctrl+k
, Ctrl+u
, Ctrl+w
, Alt+d
などで削除(カット)されたテキストは、一時的なバッファ(キルリング)に保存されます。Ctrl+y
で最新のものを、Alt+y
でそれ以前のものを呼び出して貼り付けることができます。
コマンド履歴 📜
過去に実行したコマンドを再利用するためのショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + p |
前のコマンド履歴を呼び出します。 | ↑ (上矢印) キーと同じ動作です。連続して押すと、さらに古い履歴を遡ります。 |
Ctrl + n |
次のコマンド履歴を呼び出します。 | ↓ (下矢印) キーと同じ動作です。履歴を遡った後に、新しい方向へ進めます。 |
Alt + < |
履歴の最初のコマンドを呼び出します。 | macOS では Esc + < の場合もあります。 |
Alt + > |
履歴の最後のコマンド(現在入力中の行)を呼び出します。 | macOS では Esc + > の場合もあります。 |
Ctrl + r |
コマンド履歴を後方(古い方向)に検索します(インクリメンタルサーチ)。 | (reverse-i-search)` と表示され、入力した文字を含む直近の履歴が表示されます。続けて Ctrl+r を押すと、さらに古い一致する履歴を検索します。見つかったコマンドは Enter で実行、矢印キーなどで編集できます。Ctrl+g または Ctrl+c で検索をキャンセルします。 |
Ctrl + s |
コマンド履歴を前方(新しい方向)に検索します(インクリメンタルサーチ)。 | ターミナルの設定によっては、このキーは画面のスクロールロック(XOFF)に割り当てられている場合があります。その場合は `stty -ixon` コマンドで無効化できます。Ctrl+r と同様の操作感です。 |
Alt + . |
直前のコマンドの最後の引数をカーソル位置に挿入します。 | 連続して押すと、さらに前のコマンドの最後の引数を順番に挿入します。ファイル名などを繰り返し使う場合に非常に便利です。macOS では Esc + . の場合もあります。Alt + _ も同様の動作をすることがあります。 |
Alt + Ctrl + y |
直前のコマンドの最初の引数をカーソル位置に挿入します。 | macOS では Esc + Ctrl + y の場合もあります。 |
!! |
直前に実行したコマンドを再実行します(イベント指定子)。 | コマンドラインで !! と入力して Enter を押します。`sudo !!` のように、前のコマンドを `sudo` 付きで実行したい場合によく使われます。 |
!文字列 |
「文字列」で始まる直近のコマンドを実行します。 | 例: !ls は最後に実行された `ls` で始まるコマンドを実行します。 |
!?文字列? |
「文字列」を含む直近のコマンドを実行します。 | 例: !?conf? は最後に実行された `conf` を含むコマンドを実行します。 |
!# |
現在入力中のコマンドライン全体を参照します。 | 主にエイリアスや関数内で使われます。 |
!$ |
直前のコマンドの最後の引数を参照します。 | 例: `mkdir my_dir` の後に `cd !$` を実行すると `cd my_dir` に展開されます。これは Alt + . と似ていますが、コマンド実行時に展開される点が異なります。 |
!* |
直前のコマンドの全ての引数を参照します。 | 例: `ls file1 file2` の後に `chmod 644 !*` を実行すると `chmod 644 file1 file2` に展開されます。 |
!:n |
直前のコマンドの n 番目の引数を参照します (0 はコマンド名)。 | 例: `cp src.txt dest.txt` の後に `vim !:1` を実行すると `vim src.txt` に展開されます。 |
^str1^str2^ |
直前のコマンドに含まれる最初の `str1` を `str2` に置換して実行します。 | 例: `echo hello` を実行した後に `^hello^world^` を実行すると `echo world` が実行されます。タイプミスを素早く修正して再実行するのに便利です。最後の `^` は省略可能な場合があります。 |
Ctrl + o |
履歴から呼び出したコマンドを実行し、次の履歴を表示します。 | 履歴を順番に実行していきたい場合に便利です。 |
履歴操作の注意:
!
を使った履歴展開は、意図しないコマンドを実行してしまう可能性があるため、実行前に展開後のコマンドを確認するか、histverify
シェルオプション(bash)を有効にすることを推奨します。
# 現在のシェルで histverify を有効にする (実行前に確認が入る)
shopt -s histverify
プロセス制御 🚦
実行中のコマンド(プロセス)を制御するためのショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + c |
現在フォアグラウンドで実行中のプロセスに割り込みシグナル(SIGINT)を送信し、通常はプロセスを終了させます。 | 意図しない無限ループや、時間がかかりすぎるコマンドを中断するのに使います。プロセスによっては無視されたり、特別な処理を行う場合があります。 |
Ctrl + z |
現在フォアグラウンドで実行中のプロセスに停止シグナル(SIGTSTP)を送信し、プロセスを一時停止してバックグラウンドに移します。 | プロセスは終了せず、メモリ上に保持されたまま停止します。`jobs` コマンドで確認でき、`fg` や `bg` コマンドで再開できます。 |
Ctrl + d |
(行が空の場合)シェルに EOF (End of File) を送信し、シェルを終了します。 | `exit` や `logout` コマンドと同じ効果です。入力中の場合はカーソル位置の文字を削除します。 |
Ctrl + \ |
現在フォアグラウンドで実行中のプロセスに終了シグナル(SIGQUIT)を送信します。 | Ctrl+c で終了しないプロセスを強制終了させる際に試すことがあります。プロセスによってはコアダンプを生成して終了します。 |
フォアグラウンドとバックグラウンド:
- フォアグラウンド: コマンドを実行すると、通常はそのコマンドが終了するまで他のコマンドを入力できません。これがフォアグラウンド実行です。
- バックグラウンド: コマンドの末尾に
&
を付けて実行すると、コマンドはバックグラウンドで実行され、すぐに次のコマンドを入力できる状態になります。 jobs
: バックグラウンドまたは一時停止中のジョブ(プロセス)の一覧を表示します。fg %ジョブ番号
: 指定したジョブ番号のプロセスをフォアグラウンドで再開します。ジョブ番号を省略すると、直近にバックグラウンド/一時停止されたジョブを再開します。bg %ジョブ番号
: 指定した一時停止中のジョブをバックグラウンドで再開します。ジョブ番号を省略すると、直近に一時停止されたジョブを再開します。
# sleep コマンドをフォアグラウンドで実行 (10秒間操作不能になる)
sleep 10
# sleep コマンドをバックグラウンドで実行 (すぐにプロンプトが戻る)
sleep 10 &
# フォアグラウンドのプロセスを一時停止
# (例: vim を実行中に Ctrl+z を押す)
vim some_file.txt
[1]+ Stopped vim some_file.txt
# ジョブ一覧を確認
jobs
[1]+ Stopped vim some_file.txt
# ジョブ1 (vim) をフォアグラウンドで再開
fg %1
# ジョブ1 (vim) をバックグラウンドで再開 (vim は通常バックグラウンド動作しない)
bg %1
画面制御 🖥️
ターミナルの表示を制御するためのショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + l |
画面をクリアします。 | `clear` コマンドと同じ効果ですが、シェルの内部コマンドとしてより速く動作することが多いです。画面の表示内容を消去し、プロンプトを一番上に表示します。スクロールバックバッファは保持されることが多いです。 |
Ctrl + s |
ターミナルへの出力を一時停止します(XOFF)。 | 大量のログが出力されている場合などに、一時的にスクロールを止めるのに使います。この機能が有効だと、意図せず画面が固まったように見えることがあります。 |
Ctrl + q |
ターミナルへの出力の停止(XOFF)を解除します(XON)。 | Ctrl+s で出力を停止した場合に、再開させるために使います。 |
Ctrl+s の挙動: もし
Ctrl+s
が意図せず画面を停止させてしまう場合(特に履歴検索 Ctrl+s
を使いたい場合)、以下のコマンドで XON/XOFF フロー制御を無効化できます。
# 現在のターミナルセッションでフロー制御を無効化
stty -ixon
# 再度有効化する場合
stty ixon
この設定を永続化するには、.bashrc
や .zshrc
などのシェル設定ファイルに追記します。
シェル機能 🐚
シェルの便利な機能(補完など)を呼び出すショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Tab |
コマンド名、ファイル名、ディレクトリ名、変数名などを補完します。 | 入力途中で Tab を押すと、候補が一つなら自動で補完され、複数ある場合は候補リストが表示されたり、もう一度 Tab を押すとリストが表示されたりします(シェルの設定による)。非常に使用頻度が高い機能です。 |
Ctrl + x * |
現在のカーソル位置までの入力にマッチする全てのファイル/ディレクトリ名を展開して表示します。 | ワイルドカード(* )の展開結果を事前に確認したい場合などに使えます。 |
Ctrl + x $ |
現在のカーソル位置までの入力にマッチする全ての変数名($ で始まる)を展開して表示します。 |
利用可能な環境変数などを確認する際に便利です。 |
Ctrl + x @ |
現在のカーソル位置までの入力にマッチする全てのホスト名(/etc/hosts などから)を展開して表示します。 |
SSH や Ping などでホスト名を補完したい場合に利用できます。 |
Ctrl + x ! |
現在のカーソル位置までの入力にマッチする全てのコマンド名(エイリアス、関数、実行可能ファイルなど)を展開して表示します。 | Tab によるコマンド補完と似ていますが、展開結果を表示する点が異なります。 |
Alt + * |
現在のワイルドカードを展開し、マッチするファイル名を挿入します。 | 例: ls *.tx まで入力して Alt+* を押すと、ls file1.txt file2.txt のように展開されます (存在する場合)。macOS では Esc + * の場合もあります。 |
Alt + ^ |
履歴展開を実行します。 | !! や !$ などを入力した後にこのキーを押すと、展開されたコマンドラインを表示します(実行はしません)。macOS では Esc + ^ の場合もあります。 |
Ctrl + Alt + e |
シェル変数、エイリアス、コマンドなどを可能な限り展開します。 | 入力したコマンドラインが最終的にどのように解釈・実行されるかを確認するのに役立ちます。 |
特殊なショートカット・その他 ✨
ターミナルエミュレータや特定の環境に依存することがあるショートカットです。
キーバインド | 説明 | 補足 |
---|---|---|
Ctrl + Shift + c |
選択したテキストをクリップボードにコピーします。 | 多くの Linux GUI ターミナルエミュレータ(GNOME Terminal, Konsole, Xfce Terminal など)で標準的に使われます。macOS のターミナルでは Cmd + c です。 |
Ctrl + Shift + v |
クリップボードの内容をカーソル位置に貼り付けます。 | 多くの Linux GUI ターミナルエミュレータで標準的に使われます。macOS のターミナルでは Cmd + v です。シェルのキルリング (Ctrl+y ) とは別のクリップボードです。 |
Ctrl + v |
次にタイプする文字をエスケープせず、文字通りに入力します (verbatim insert)。 | 例えば、Ctrl+v の後に Tab を押すと、補完機能ではなくタブ文字そのものが入力されます。特殊な制御文字を入力したい場合に使います。 |
マウス選択 | テキストをマウスでドラッグして選択します。 | ターミナルエミュレータの機能です。 |
マウス中ボタンクリック | 選択されているテキスト(プライマリ選択)を貼り付けます。 | X Window System 環境でよく使われる機能です。Ctrl+Shift+v のクリップボードとは異なる場合があります。 |
tmux / screen のキー |
画面分割、ウィンドウ切り替え、セッションのデタッチ/アタッチなど。 | ターミナルマルチプレクサ (tmux , screen ) を使用している場合、これら独自のプレフィックスキー(例: Ctrl+b や Ctrl+a )に続けて様々な操作を行うショートカットがあります。詳細はそれぞれのドキュメントを参照してください。 |
環境による違い: ショートカットキーの挙動は、使用しているシェル(Bash, Zsh, Fish など)、Readline ライブラリのバージョン、ターミナルエミュレータ(GNOME Terminal, Konsole, iTerm2, Windows Terminal など)、OS(Linux ディストリビューション, macOS, WSL など)、およびそれらの設定によって異なる場合があります。特に
シェルのキーバインドは
Alt
キー(Meta キーとも呼ばれる)を使用するショートカットは、ターミナルや OS の設定によって Esc
キーをプレフィックスとして使用する必要がある場合があります(例: Alt+f
の代わりに Esc
を押してから f
を押す)。
シェルのキーバインドは
bind -p
(Bash) や bindkey
(Zsh) コマンドで確認・カスタマイズできます。
# Bash で現在のキーバインド一覧を表示
bind -p
# Zsh で現在のキーバインド一覧を表示
bindkey
コメント