历史
1.历史 histroy
当执行命令时,执行过的命令会自动记录在内存中,方便后续再次调用
每次用户退出系统时,会将内存中保存的历史记录保存到对应的家目录中,存储位置为/.bash_histroy
再次登录时,会自动将历史文件中的信息自动加载到内存。
2.历史命令
histroy
- -c 清空历史
- -d 删除历史的第几个命令
- n 显示最近的n条命令
- -r 将历史文件的内容附加到历史列表
- -w 保存历史列表内容到指定文件
3.调用历史命令
3.1重复历史命令
重复前一个历史命令方法:
1.重复前一个命令使用上方向键,并回车执行
2. 按 !! 并回车执行 输入 !-1 并回车执行
3.按 Ctrl+p 并回车执行
4. !:0 执行前一条命令(去除参数)
[root@centos8 ~]#cd /data
[root@centos8 data]#!:0
cd
[root@centos8 ~]#
- !n 执行history命令输出对应序号n的命令
[root@centos8 ~]#history
1 cd
2 cd /data
3 cd
4 history
[root@centos8 ~]#!2
cd /data
[root@centos8 data]#
- !-n 执行history历史中倒数第n个命令
[root@centos8 ~]#history
1 cd
2 cd /data
3 cd
4 history
[root@centos8 ~]#!-3
cd /data
[root@centos8 data]#
3.2 搜索历史命令
使用up(向上)和down(向下)键来上下浏览从前输入的命令
- Ctrl-r来在命令历史中搜索命令 (reverse-i-search)`’:
- Ctrl+g:从历史搜索模式退出
root@centos8 data]#history
1 cd /data
2 cd
3 cd /data
4 ll
5 history
[root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Jul 29 14:08 f1
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
- !string 重复前一个以“string”开头的命令
[root@centos8 data]#history
1 ls /
2 ls
3 cd /data
4 cd
5 history
[root@centos8 data]#!c
cd
[root@centos8 ~]#
- !?string 重复前一个包含string的命令
[root@centos8 ~]#history
1 ls /
2 ls
3 cd /data
4 cd
5 history
[root@centos8 ~]#!?data
cd /data
[root@centos8 data]#
3.3 调用前一个历史命令参数
- 要重新调用前一个命令中最后一个参数
1.!$
2.Esc, . 点击Esc键后松开,然后点击 . 键
3.Alt+ . 按住Alt键的同时点击 . 键
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f1
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
[root@centos8 data]#ll !$
ll f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
- command !^ 利用上一个命令的第一个参数做cmd的参数
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 6 Jul 29 14:26 f1
-rw-r--r--. 1 root root 7 Jul 29 14:27 f2
[root@centos8 data]#cat !^
cat f1
Hello
- command !$ 利用上一个命令的最后一个参数做cmd的参数
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 6 Jul 29 14:26 f1
-rw-r--r--. 1 root root 6 Jul 29 14:28 f2
[root@centos8 data]#cat !$
cat f2
World
- command !* 利用上一个命令的全部参数做cmd的参数
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 6 Jul 29 14:30 f1
-rw-r--r--. 1 root root 6 Jul 29 14:28 f2
[root@centos8 data]#cat !*
cat f1 f2
Hello
World
- command !:n 利用上一个命令的第n个参数做cmd的参数
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 6 Jul 29 14:30 f1
-rw-r--r--. 1 root root 6 Jul 29 14:28 f2
[root@centos8 data]#ll !:1
ll f1
-rw-r--r--. 1 root root 6 Jul 29 14:30 f1
3.4 调用第n条命令的参数
- command !n:^ 调用第n条命令的第一个参数
[root@centos8 data]#history
1 cat f1 f2
2 cat f3 f4
3 history
[root@centos8 data]#cat !1:^
cat f1
Hello
- command !n:$ 调用第n条命令的最后一个参数
[root@centos8 data]#history
1 cat f1 f2
2 cat f3 f4
3 history
[root@centos8 data]#cat !1:$
cat f2
World
- command !n:m 调用第n条命令的第m个参数
[root@centos8 data]#history
1 cat f1 f2
2 cat f3 f4
3 history
[root@centos8 data]#cat !2:2
cat f4
Happy
- command !n:* 调用第n条命令的所有参数
[root@centos8 data]#history
1 cat f1 f2
2 cat f3 f4
3 history
[root@centos8 data]#cat !1:*
cat f1 f2
Hello
World
3.5 搜索历史命令调用参数
- command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
[root@centos8 data]#history
1 cd
2 cd /data
3 vim f1
4 ll f1 f2
5 history
[root@centos8 data]#cat !ll:^
cat f1
Hello
- command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
[root@centos8 data]#history
1 cd
2 cd /data
3 vim f1
4 ll f1 f2
5 history
[root@centos8 data]#cat !ll:$
cat f2
World
- command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
[root@centos8 data]#history
1 cd
2 cd /data
3 vim f1
4 ll f1 f2
5 history
[root@centos8 data]#cat !ll:1
cat f1
Hello
- command !string: *从命令历史中搜索以 string 开头的命令,并获取它的所有参数
[root@centos8 data]#history
1 cd
2 cd /data
3 vim f1
4 ll f1 f2
5 history
[root@centos8 data]#cat !ll:*
cat f1 f2
Hello
3.6 其他
- ^string 删除上一条命令中的第一个string
root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f1
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
[root@centos8 data]#^f1
ll f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
- ^string1^string2 将上一条命令中的第一个string1替换为string2
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f1
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
[root@centos8 data]#^f1^f2
ll f2 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
- !:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
[root@centos8 data]#ll f1 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f1
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
[root@centos8 data]#^f1^f2
ll f2 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2
-rw-r--r--. 1 root root 0 Jul 29 14:08 f2