📜  bash 最常用的历史函数 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:13:37.661000             🧑  作者: Mango

Bash 最常用的历史函数

在使用 Bash shell 进行命令行操作时,我们经常需要使用历史命令来执行一些重复的操作,或者是重新编辑之前执行过的命令。这时候,Bash 提供了一些常用的历史函数,可以方便我们进行这些操作。

历史命令

在 Bash shell 中,我们可以通过 history 命令来查看之前执行过的历史命令。这些历史命令都有一个编号,可以通过编号来重新执行它们。

!! 命令

!! 命令可以用来重新执行上一条命令,相当于 !-1 命令。

$ ls -l /tmp
$ !! # 重新执行 ls -l /tmp 命令
!n 命令

!n 命令可以用来重新执行第 n 条命令,其中 n 是命令的编号。

$ history
1  ls -l /tmp
2  cd /usr/local
3  pwd
$ !2 # 重新执行第二条命令 cd /usr/local
!string 命令

!string 命令可以用来重新执行最近一次以字符串 string 开头的命令。

$ history
1  ls -l /tmp
2  cd /usr/local
3  pwd
4  cd /etc
$ !cd # 重新执行最近一次以 cd 开头的命令 cd /etc
!$ 命令

!$ 命令可以用来重新执行上一条命令中的最后一个参数。

$ echo hello world
hello world
$ cat !$ # 重新执行 cat world 命令
历史命令修改

除了重新执行历史命令之外,我们还可以对历史命令进行修改,例如修改命令中的参数或者删除一些不需要的命令。

^old^new 命令

^old^new 命令可以用来把上一条命令中的 old 替换为 new,并重新执行该命令。

$ ls -l /tmp
$ ^ls^cat # 把上一条命令中的 ls 替换为 cat,并重新执行 cat -l /tmp 命令
!:n 命令

!:n 命令可以用来获取上一次执行的命令中的第 n 个参数。

$ ls -l /tmp
$ cat !:2 # 获取上一次执行的命令中的第二个参数 /tmp,并执行 cat /tmp 命令
!:n-$ 命令

!:n-$ 命令可以用来获取上一次执行的命令中从第 n 个参数到最后一个参数的所有参数,并作为新的命令。

$ ls -l /tmp /var
$ cat !:2-$ # 获取上一次执行的命令中从第二个参数到最后一个参数,即 /tmp /var,并执行 cat /tmp /var 命令
!-n 命令

!-n 命令可以用来重新执行历史命令中倒数第 n 条命令。

$ history
1  ls -l /tmp
2  cd /usr/local
3  pwd
4  cd /etc
$ !-2 # 重新执行倒数第二条命令 cd /usr/local
!:p 命令

!:p 命令可以用来打印出将要执行的命令,但并不执行该命令。

$ ls -l /tmp
$ !!:p # 打印出将要执行的命令 ls -l /tmp,但不执行该命令
总结

这些历史命令和命令修改命令可以让我们更方便地进行命令行操作,大大提高了我们的效率。我们可以通过 man bash 命令来了解更多 Bash shell 中的历史命令和命令修改命令。