このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux:コマンド履歴の操作方法

 Linuxを使用していると、以前に実行したコマンドを再度実行したり、少しだけ修正して再利用したいという場面がよくあります。bashは、入力したコマンドラインを自動的にコマンド履歴として記録しています。この機能を活用することで、過去に入力したコマンドを手で再入力する手間を省き、効率的に作業を進めることができます。

コマンド履歴の操作方法

 コマンド履歴を操作するための基本的なキーボードショートカットを以下にまとめます。これらの操作を覚えておくと、コマンドラインでの作業が格段に快適になります。

キー操作説明
Ctrl + p または 前のコマンド履歴を表示する(Previous)
Ctrl + n または 次のコマンド履歴を表示する(Next)
Ctrl + r履歴からコマンドを逆検索する
コマンド履歴の操作方法
  • Ctrl + p(または上矢印キー)
    ・コマンド履歴を一つ前に遡ります。
    pPrevious(前)の略です。
  • Ctrl + n(または下矢印キー)
    ・コマンド履歴を一つ次に進めます。
    nNext(次)の略です。
  • Ctrl + r
    ・履歴の中から特定の文字列を含むコマンドを検索します。

コマンド履歴の活用例

直前のコマンドを修正して再実行する

例えば、echoコマンドを実行しようとして、誤ってchoと入力してしまったとします。

user01@ubuntu:~$ cho Hello
コマンド 'cho' が見つかりません。もしかして:
  command 'who' from deb coreutils (9.4-2ubuntu2)
  command 'cdo' from deb cdo (2.3.0-1)
  command 'chg' from deb mercurial (6.5.3-1)
  command 'co' from deb rcs (5.10.1-1)
  command 'echo' from deb coreutils (9.4-2ubuntu2)
  command 'cht' from deb chemtool (1.6.14-6)
次を試してみてください: sudo apt install <deb name>

この直後にCtrl + pを押すと、直前に入力したコマンドが再度コマンドラインに表示されます。

user01@ubuntu:~$ cho Hello

ここで、Ctrl + aを押してカーソルを行頭に移動し、eを追加入力します。

user01@ubuntu:~$ cho Hello
                 ▲(カーソル位置)
user01@ubuntu:~$ echo Hello # 「e」を入力

これで正しいコマンドになりました。Enterキーを押して実行すると、以下のように表示されます。

Hello

履歴を遡って過去のコマンドを呼び出す

 もっと前のコマンドに戻りたい場合、Ctrl + pを繰り返し押すことで、過去のコマンド履歴を順に表示できます。逆に、Ctrl + nを押すと、履歴を順に進めることができます。

ポイント
  • Ctrl + pCtrl + nの操作は、上下のカーソルキーでも同じ動作をします。
  • コマンド履歴は、ログインセッション中だけでなく、次回のログイン時にも保持される場合があります。

履歴から特定のコマンドを検索する

大量のコマンド履歴の中から特定のコマンドを見つけたい場合、Ctrl + rを使用します。

1.Ctrl + rを押すと、以下のように表示されます。
(reverse-i-search)`': 
2.検索したいコマンドの一部を入力します。例えば、pingと入力すると、履歴からpingを含む最新のコマンドが表示されます。
(reverse-i-search)`ping': ping 127.0.0.1
3.目的のコマンドが表示されたら、Enterキーを押して実行するか、左右の矢印キーで編集できます。

pingコマンドを実行した場合はCtrl + cで強制終了させます。

user01@ubuntu:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.028 ms
^C
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2066ms
rtt min/avg/max/mdev = 0.025/0.029/0.034/0.003 ms

まとめ

 コマンド履歴の機能を活用することで、過去に入力したコマンドを効率的に再利用できます。特に、誤って入力したコマンドを修正して再度実行する際に非常に便利です。以下のポイントを覚えて、日常の操作に取り入れてみてください。

  • Ctrl + p(または↑)で前のコマンドに遡る
  • Ctrl + n(または↓)で次のコマンドに進む
  • Ctrl + rで履歴からコマンドを検索する

これらの操作を習得することで、コマンドラインでの作業効率が大幅に向上します。