InfraAcademy

InfraAcademy Blog

Linuxで前の画面に戻れないときは?抜けるコマンドとショートカットキーを状況別に解説

| #Linux #Linux初心者

こんにちは。

InfraAcademyというインフラ学習サイトを運営しております、ryuと申します。

Linuxを操作していると、突然いつものプロンプトが表示されなくなり、どうやって前の画面へ戻ればよいのかわからなくなることがあります。

コマンドを実行したまま止まらない。 viを開いたら閉じられない。 SSH接続から抜けたいのに、ブラウザの戻るボタンのようなものが見つからない。

初心者の頃は、こうした状態になるだけでも不安になりますよね。

結論からお伝えすると、Linuxにはどの画面でも共通して使える戻るコマンドがあるわけではありません。いま何を操作しているかによって、抜け方が変わります。

この記事では、Linuxで前の画面に戻れないときに使うコマンドやショートカットキーを、状況別にわかりやすく解説します。

私はエンジニアとして10年以上Linuxを扱ってきましたが、現場でもっともよく使うのはCtrl + Cqexitの3つです。

ただし、意味を理解せずに連打すると、止める必要のない処理を中断したり、一時停止したプロセスを残したりします。まずは、それぞれの役割を整理しておきましょう。

Linuxで抜けるためのコマンドとショートカットキー一覧

Linuxで抜けるための代表的な操作を、最初に一覧で確認します。

似た操作に見えても、プロセスの中断、入力の終了、画面の終了、ログアウトでは意味が異なります。

状況 操作 何が起こるか
実行中のコマンドを止めたい Ctrl + C フォアグラウンドの処理へ中断シグナルを送る
入力の終了を伝えたい Ctrl + D EOFを送る。空のシェルでは終了することがある
処理を一時停止したい Ctrl + Z フォアグラウンドのプロセスを停止状態にする
シェルやSSH接続を終了したい exit 現在のシェルを終了する
ログインシェルからログアウトしたい logout ログインセッションを終了する
lessmanを閉じたい 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というシグナルが実行中のプロセスへ送られます。

ただし、すべてのプログラムが必ず終了するとは限りません。プログラム側がシグナルを無視したり、終了前の処理を実行したりすることもあります。

pingtail -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.txtgit logsystemctl 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コマンドの使い方を学びたい方は、こちらをご覧下さい。

ファイルの編集〜vimの使い方をマスターする〜

入力途中の状態から抜ける方法

コマンドを入力したのに実行されず、次の行に>だけが表示されることがあります。

これは処理が固まっているのではなく、シェルが入力の続きを待っている可能性があります。

引用符を閉じ忘れた場合

次のようにダブルクォートを閉じ忘れると、シェルは文字列がまだ続いていると判断します。

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で抜けられないときの判断手順

最後に、どの操作を使えばよいかわからないときの判断方法を整理します。

まず、画面上に表示されている文字を確認してください。

  1. コマンドの出力が流れ続けているならCtrl + C
  2. (END)やマニュアル画面ならq
  3. vi・VimならEscの後に:q:q!:wq
  4. SSHやシェルを終了したいならexit
  5. 入力の終わりを伝えたいならCtrl + D
  6. 後で処理を再開したいときだけCtrl + Z
  7. >が表示されているなら引用符や括弧の閉じ忘れを確認する

すべてを一度に暗記する必要はありません。

最初は、処理を止めるCtrl + C、画面を閉じるq、シェルを終了するexitの3つを覚えるだけでも、Linux操作中の不安はかなり減ります。

まとめ

今回の記事では、Linuxで前の画面に戻れないときに使うコマンドとショートカットキーを解説しました。

Linuxにはブラウザのような共通の戻るボタンがなく、操作しているプログラムに応じて抜け方が変わります。

実行中の処理を中断するならCtrl + C、入力を終了するならCtrl + D、一時停止するならCtrl + Zです。

lessmanq、vi・VimはEscを押してから:qなどを入力し、シェルやSSH接続はexitで終了します。

特に注意したいのは、Ctrl + Zはプロセスを終了する操作ではないという点です。

停止中のジョブを残さないためにも、終了したいのか、後で再開したいのかを考えて使い分けましょう。

Linuxコマンドは、実際にターミナルで試すことで少しずつ身につきます。InfraAcademyでは、Linuxやネットワークを実際に操作しながら体系的に学習できます。

InfraAcademyでLinuxの学習を始める

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る