こんにちは。
InfraAcademyというインフラ学習サイトを運営しております、ryuと申します。
Linuxを操作していると、突然いつものプロンプトが表示されなくなり、どうやって前の画面へ戻ればよいのかわからなくなることがあります。
コマンドを実行したまま止まらない。 viを開いたら閉じられない。 SSH接続から抜けたいのに、ブラウザの戻るボタンのようなものが見つからない。
初心者の頃は、こうした状態になるだけでも不安になりますよね。
結論からお伝えすると、Linuxにはどの画面でも共通して使える戻るコマンドがあるわけではありません。いま何を操作しているかによって、抜け方が変わります。
この記事では、Linuxで前の画面に戻れないときに使うコマンドやショートカットキーを、状況別にわかりやすく解説します。
私はエンジニアとして10年以上Linuxを扱ってきましたが、現場でもっともよく使うのはCtrl + C、q、exitの3つです。
ただし、意味を理解せずに連打すると、止める必要のない処理を中断したり、一時停止したプロセスを残したりします。まずは、それぞれの役割を整理しておきましょう。
Linuxで抜けるためのコマンドとショートカットキー一覧¶
Linuxで抜けるための代表的な操作を、最初に一覧で確認します。
似た操作に見えても、プロセスの中断、入力の終了、画面の終了、ログアウトでは意味が異なります。
| 状況 | 操作 | 何が起こるか |
|---|---|---|
| 実行中のコマンドを止めたい | Ctrl + C |
フォアグラウンドの処理へ中断シグナルを送る |
| 入力の終了を伝えたい | Ctrl + D |
EOFを送る。空のシェルでは終了することがある |
| 処理を一時停止したい | Ctrl + Z |
フォアグラウンドのプロセスを停止状態にする |
| シェルやSSH接続を終了したい | exit |
現在のシェルを終了する |
| ログインシェルからログアウトしたい | logout |
ログインセッションを終了する |
lessやmanを閉じたい |
q |
ページャーを終了する |
| vi・Vimを終了したい | Escの後に:q |
保存済みなら終了する |
| vi・Vimを保存せず終了したい | Escの後に:q! |
変更を破棄して終了する |
| vi・Vimを保存して終了したい | Escの後に:wq |
保存して終了する |
| 引用符を閉じ忘れた入力を取り消したい | Ctrl + C |
入力途中のコマンドをキャンセルする |
迷ったときは、まず画面に何が表示されているかを見てください。
$や#が表示されていれば通常のシェルです。画面下部に:が表示されていればviのコマンド入力、(END)が表示されていればlessである可能性が高いです。
実行中のコマンドから抜ける方法¶
まずは、コマンドを実行した後に処理が終わらず、プロンプトへ戻れない場合です。
この状況では、Ctrl + CまたはCtrl + Zを使うことが多いですが、2つの動作はまったく異なります。
Ctrl + Cで実行中の処理を中断する¶
実行中のプロセスを中断したい場合、Ctrlキーを押しながらCキーを押すことで現在のプロセスを中断できます。
例えば、長時間実行されるスクリプトや無限ループに入ってしまったスクリプトを中断するためにCtrl + Cを使います。
以下のように、永遠と「Running…」を出力するスクリプトがあるとします。
#!/bin/bash
while true; do
echo "Running..."
sleep 1
done
スクリプトを実行後に、Ctrl + Cを押すと、以下のようにスクリプトを中断してくれます。

Ctrl + Cを押すと、多くの場合はSIGINTというシグナルが実行中のプロセスへ送られます。
ただし、すべてのプログラムが必ず終了するとは限りません。プログラム側がシグナルを無視したり、終了前の処理を実行したりすることもあります。
ping、tail -f、開発用サーバー、停止しないシェルスクリプトなどを終了したいときは、まずCtrl + Cを試すのが基本です。
ping 8.8.8.8
途中でCtrl + Cを押せば、pingの統計情報が表示され、通常のプロンプトへ戻ります。
Ctrl + Dで入力の終わりを伝える¶
Ctrl + Dは、ターミナルやシェルに対してEOF(End Of File)を送信するために使用されます。EOFとは、ファイルの終端(終わり)を示すものです。
この操作により、通常はシェルセッションを終了することができます。
PythonやRubyなどのインタープリタを使用している場合、Ctrl + Dを押すことでインタープリタを終了することができます。

正確には、Ctrl + Dは終了命令を送るのではなく、標準入力の終わりを伝える操作です。
そのため、入力待ちのプログラムでは入力が完了し、空のシェルプロンプトで実行するとシェルが終了することがあります。
例えば、catコマンドを引数なしで実行すると、キーボードからの入力を待ちます。
cat
文字を入力した後にCtrl + Dを押すと、入力が終了してプロンプトへ戻ります。
SSH接続中に誤ってCtrl + Dを押すと接続が終了する場合があるため、入力途中には注意してください。
Ctrl + Zでプロセスを一時停止する¶
Ctrl + Zは、実行中のプロセスを一時停止するためのキーボードショートカットです。
これは現在のプロセスを一時停止し、シェルの制御を取り戻す操作です。
例えば、sleepコマンドを実行後に、Ctrl + Zを押すことで、一時中断することができます。
中断したプロセスは、jobsコマンドを使って確認することが可能です。
プロセスを再開させる場合は、fgコマンドもしくはbgコマンドを実行します。
ここは誤解しやすいポイントです。Ctrl + Zを押した直後のプロセスは、バックグラウンドで実行されているのではなく、停止した状態になっています。
jobsを実行すると、Stoppedと表示されるはずです。
jobs
フォアグラウンドへ戻して再開する場合は、fgを使います。%1はジョブ番号です。
fg %1
バックグラウンドで再開する場合は、bgを使います。
bg %1
単に画面から抜けたいだけのときにCtrl + Zを使うと、停止中のジョブが残ります。
処理を終わらせたい場合はCtrl + C、後で再開したい場合はCtrl + Zと覚えると、使い分けやすくなります。
【関連記事】Linuxでコマンドやスクリプトをバックグラウンド実行する方法
シェルやSSH接続から抜ける方法¶
コマンドの実行ではなく、現在ログインしているシェルやリモートサーバーから抜けたい場合は、exitを使います。
Ctrl + Cは実行中の処理を止める操作なので、シェルそのものを終了する操作とは異なります。
exitコマンドで現在のシェルを終了する¶
exitコマンドは、シェルでセッションを終了するために使用されるコマンドです。
使い方は、exitと入力するだけです。
exit
SSHでサーバーへ接続している場合にexitを実行すると、リモート側のシェルが終了し、接続元のターミナルへ戻ります。
ssh user@example.com
# リモートサーバーで作業
exit
suコマンドで別のユーザーへ切り替えている場合も、exitを実行すると一つ前のユーザーへ戻ります。
何重にもSSH接続やユーザー切り替えを行っているときは、exitを実行するたびにシェルが一段ずつ終了します。
【関連記事】LinuxのSSHコマンドでリモートサーバーへ接続する方法
logoutコマンドでログアウトする¶
logoutコマンドは、ユーザーをログアウトするコマンドです。ログイン後に実行すると、ログイン前の状態に戻ります。
使い方はexit同様に、コマンドを入力するだけです。
logout
ただし、logoutは主にログインシェルで使うコマンドです。
通常のシェルで実行すると、not login shellのようなエラーになることがあります。迷った場合は、より広く使えるexitを利用するとよいでしょう。
man・less・topなどの画面から抜ける方法¶
Linuxでは、コマンドの結果を別の画面で表示するプログラムがあります。
この場合はCtrl + Cではなく、1文字のqで終了できることがよくあります。
manコマンドやlessコマンドはqで終了する¶
manコマンドでマニュアルを開くと、画面の下に:や(END)が表示されることがあります。
これはlessというページャーで内容を表示している状態なので、qを押すと終了できます。
man ls
終了するときは、コロンやEnterを付けずにqだけを押してください。
less file.txt、git log、systemctl statusなどでも、同じようにqで抜ける場合があります。
topコマンドもqで終了できる¶
CPUやメモリの使用状況をリアルタイム表示するtopコマンドも、qを押すと終了できます。
top
Ctrl + Cでも止められる場合はありますが、アプリケーション側が用意している正式な終了操作があるなら、そちらを使う方が自然です。
vi・Vimから抜ける方法¶
Linux初心者がもっとも戸惑いやすいのが、viやVimを開いた後に終了できなくなるケースです。
viには文字を入力する挿入モードと、コマンドを受け付けるノーマルモードがあるため、現在のモードによってキーの意味が変わります。
変更がなければ:qで終了する¶
:qは、ファイルに未保存の変更がないときにvi・Vimを終了するコマンドです。
変更がある場合はエラーが表示されるため、編集内容が意図せず消えることはありません。
まずEscキーを押してノーマルモードへ戻り、次に:qと入力してEnterを押します。
Esc
:q
Enter
ファイルを変更していなければ、そのまま終了できます。
:q!で変更を破棄して終了する¶
編集内容を保存せず、強制的に終了する場合は:q!を使います。
Esc
:q!
Enter
No write since last changeと表示されて閉じられない場合も、:q!なら変更を破棄して終了できます。
ただし、入力した内容は失われます。必要な変更が残っていないかを確認してから実行してください。
:wqで保存して終了する¶
変更内容を保存して終了したい場合は:wqを使います。
Esc
:wq
Enter
wはwrite、qはquitを意味します。
保存だけを行う場合は:w、保存して終了する場合は:wqと整理すると覚えやすいです。
viコマンドの使い方を学びたい方は、こちらをご覧下さい。
入力途中の状態から抜ける方法¶
コマンドを入力したのに実行されず、次の行に>だけが表示されることがあります。
これは処理が固まっているのではなく、シェルが入力の続きを待っている可能性があります。
引用符を閉じ忘れた場合¶
次のようにダブルクォートを閉じ忘れると、シェルは文字列がまだ続いていると判断します。
echo "hello
>
この状態から抜けるには、残りの"を入力してコマンドを完成させるか、Ctrl + Cで入力を取り消します。
>
# Ctrl + Cを押す
シングルクォート、バッククォート、丸括弧などを閉じ忘れた場合も、似た状態になります。
プロンプトがいつもの$ではなく>になったら、入力漏れがないかを確認してください。
catや標準入力の待機状態¶
catだけを実行した場合や、標準入力からデータを受け取るコマンドでは、入力待ちになってプロンプトへ戻らないことがあります。
この場合、入力を正常に終えるならCtrl + D、処理自体を中断するならCtrl + Cを使います。
標準入力・標準出力の仕組みを理解すると、なぜコマンドが待機しているのか判断しやすくなります。
【関連記事】Linuxの標準入力・標準出力・標準エラーを初心者向けに解説
戻れないときに連打してはいけないキー¶
前の画面へ戻れないと、不安になって複数のキーを連打したくなります。
しかし、Linuxでは入力したキーが後からまとめて処理されることもあるため、状況を確認せずに連打するのは避けましょう。
Ctrl + Zを脱出キーとして使わない¶
Ctrl + Zは終了操作ではありません。
一時停止したジョブを放置すると、jobsに停止中のプロセスが残り、後から何を止めたのかわからなくなることがあります。
jobs
不要な停止ジョブを終了する場合は、ジョブ番号を確認してからkillを使います。
kill %1
強制終了の前に処理内容を確認する¶
バックアップ、パッケージ更新、ファイルコピー、データベース処理などを途中で中断すると、不完全なファイルや中途半端な状態が残る可能性があります。
私も実務では、すぐにCtrl + Cを押すのではなく、まず別のターミナルからプロセスやログを確認します。
ps aux | grep プロセス名
処理が遅いだけなのか、本当に停止しているのかを見分けてから操作することが大切です。
Linuxで抜けられないときの判断手順¶
最後に、どの操作を使えばよいかわからないときの判断方法を整理します。
まず、画面上に表示されている文字を確認してください。
- コマンドの出力が流れ続けているなら
Ctrl + C (END)やマニュアル画面ならq- vi・Vimなら
Escの後に:q、:q!、:wq - SSHやシェルを終了したいなら
exit - 入力の終わりを伝えたいなら
Ctrl + D - 後で処理を再開したいときだけ
Ctrl + Z >が表示されているなら引用符や括弧の閉じ忘れを確認する
すべてを一度に暗記する必要はありません。
最初は、処理を止めるCtrl + C、画面を閉じるq、シェルを終了するexitの3つを覚えるだけでも、Linux操作中の不安はかなり減ります。
まとめ¶
今回の記事では、Linuxで前の画面に戻れないときに使うコマンドとショートカットキーを解説しました。
Linuxにはブラウザのような共通の戻るボタンがなく、操作しているプログラムに応じて抜け方が変わります。
実行中の処理を中断するならCtrl + C、入力を終了するならCtrl + D、一時停止するならCtrl + Zです。
lessやmanはq、vi・VimはEscを押してから:qなどを入力し、シェルやSSH接続はexitで終了します。
特に注意したいのは、Ctrl + Zはプロセスを終了する操作ではないという点です。
停止中のジョブを残さないためにも、終了したいのか、後で再開したいのかを考えて使い分けましょう。
Linuxコマンドは、実際にターミナルで試すことで少しずつ身につきます。InfraAcademyでは、Linuxやネットワークを実際に操作しながら体系的に学習できます。