このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】コマンド履歴の呼び出し:historyコマンド
historyコマンドの概要
「history
」コマンドは、シェルのセッションで実行したすべてのコマンドのリストを表示するためのコマンドです。各コマンドは番号付きで表示され、この番号を使用して特定のコマンドを再実行することができます。
「!」記号とコマンド履歴の呼び出し
コマンド | 説明 | 使用例 |
---|---|---|
!n | 履歴リストの特定の番号 n に対応するコマンドを再実行します。 | !42 |
!! | 直前に実行したコマンドを再実行します。 | !! |
!string | string で始まる最後のコマンドを再実行します。 | !ls |
!$ | 直前に実行したコマンドの最後の引数を再利用します。 | echo !$ |
^old^new | 直前のコマンドで old を new に置き換えて再実行します。 | ^cat^bat |
コマンドの使用例と解説
1.演習の準備
演習を始める前に、コマンドをいくつか実行しておきます。以下のコマンドを実行します。
- 「date > file」コマンド
- 「cat file」コマンド
user01@ubuntu-vm:~$ date > file
user01@ubuntu-vm:~$ cat file
2024年 6月 16日 日曜日 03:49:06 JST
2.コマンド履歴の表示
・「history
」コマンドを実行します。
セッション内で実行したすべてのコマンドが番号付きで表示されます。
user01@ubuntu-vm:~$ history
710 ls -l
711 cat /var/log/syslog | grep "error" | wc -l
712 cat /var/log/syslog | grep "error"
(省略)
1706 clear
1707 date > file
1708 cat file
1709 history
3.特定の履歴番号のコマンドを再実行
・「!1708
」コマンドを実行します。
履歴番号 1708 のコマンド 「cat file
」を再実行します。
user01@ubuntu-vm:~$ !1708
cat file
2024年 6月 16日 日曜日 03:49:06 JST
4.直前のコマンドを再実行
・「!!
」コマンドを実行します。
直前に実行したコマンドを再実行します。例えば、直前が「cat file
」なら、それが再実行されます。
user01@ubuntu-vm:~$ !!
cat file
2024年 6月 16日 日曜日 03:49:06 JST
5.特定の文字列で始まるコマンドを再実行
・「!ls
」コマンドを実行します。
最後に実行した ls
コマンドを再実行します。
user01@ubuntu-vm:~$ !ls
ls
file ダウンロード デスクトップ ビデオ ミュージック
snap テンプレート ドキュメント ピクチャ 公開
6.直前のコマンドの最後の引数を再利用
以下のコマンドを実行します。
- 「
cat /etc/passwd
」コマンド - 「
ls -l !$
」コマンド
直前のコマンドの最後の引数を再利用します。例えば、直前のコマンドが 「cat /etc/passwd
」なら、「ls -l /etc/passwd
」が実行されます。
user01@ubuntu-vm:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
(省略)
user01@ubuntu-vm:~$ ls -l !$
ls -l /etc/passwd
-rw-r--r-- 1 root root 3123 6月 9 02:54 /etc/passwd
7.コマンドの部分置換
以下のコマンドを実行します。
- 「
ls file
」コマンド - 「
^ls^cat
」コマンド
直前のコマンドで「ls
」を「cat
」に置き換えて再実行します。例えば、直前のコマンドが「ls file
」なら、「cat file
」が実行されます。
user01@ubuntu-vm:~$ ls file
file
user01@ubuntu-vm:~$ ^ls^cat
cat file
2024年 6月 16日 日曜日 03:49:06 JST
8.ファイルの削除
演習で作成したファイルを削除します。
・「rm file
」コマンドを実行し、「ls
」コマンドでファイルが削除されたかどうかを確認します。
user01@ubuntu-vm:~$ rm file
user01@ubuntu-vm:~$ ls
snap テンプレート ドキュメント ピクチャ 公開
ダウンロード デスクトップ ビデオ ミュージック
まとめ
「history
」コマンドと「!」記号を組み合わせることで、過去のコマンドを効率的に再利用でき、作業効率が大幅に向上します。以下の表は、それぞれのコマンドの使用例とその効果をまとめたものです。
コマンド | 説明 | 使用例 |
---|---|---|
!n | 履歴リストの特定の番号 n に対応するコマンドを再実行 | !42 |
!! | 直前に実行したコマンドを再実行 | !! |
!string | string で始まる最後のコマンドを再実行 | !ls |
!$ | 直前に実行したコマンドの最後の引数を再利用 | echo !$ |
^old^new | 直前のコマンドで old を new に置き換えて再実行 | ^cat^bat |