运维笔记9
命令行历史
- 保存你输入的命令历史。可以用它来重复执行命令。
- 登录shell时,会读取历史文件中记录下的命令
~/.bash_history
。 - 登录进入shell后新执行的命令只会记录在缓存中;这些命令会在用户退出之后追加到命令历史文件
~/.bash_history
中。
命令行历史回溯命令与快捷键
重复之前一个命令,有四种办法
- 重复前一个命令使用上下方向键。
- 按
!!
并回车执行 - 输入
!-1
并回车执行 - 按
Ctrl+p
并回车执行。
!:0
执行前一条命令(去除参数)Ctrl+n
显示当前历史中的下一条命令,但不执行Ctrl+j
执行当前命令Ctrl+r
来在命令历史中搜索命令Ctrl+g
从历史搜索模式退出!n
执行history
命令输出对应序号n的命令!-n
执行history历史中倒数第n个命令
命令行历史的高级功能
!string
重复前一个以string
开头的命令!?string
重复前一个包含string
的命令!string:p
仅打印命令历史,而不执行!$:p
打印输出!$
(上一条命令的最后一个参数)的内容!*:p
打印输出!*
(上一条命令的所有参数)的内容^string
删除上一条命令中的第一个string
^string1^string2
将上一条命令中的第一个string1
更换为string2
!:gs/string1/string2
将上一条命令中所有的string1
都替换为string2
- 要重新调用前一个命令中最后一个参数
!$
表示前一个命令中的最后一个参数Esc+.
(点击Esc
键后松开,然后点击.
键)Alt+.
(按住Alt键的同时点击.
键)
调用历史参数
command !^
利用上一个命令的第一个参数做command
的参数command !$
利用上一个命令的最后一个参数做command
的参数command !*
利用上一个命令的全部参数做command
的参数command !:n
利用上一个命令的第n个参数做command
的参数command !n:^
调用第n
条命令的第一个参数command !n:$
调用第n
条命令的最后一个参数command !n:m
调用第n
条命令的第m
个参数command !n:*
调用第n
条命令的所有参数
命令history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c
: 清空命令历史-d offset
: 删除历史中指定的第offset个命令n
: 显示最近的n条历史-a
: 追加本次会话新执行的命令历史列表至历史文件-r
: 读历史文件附加到历史列表-w
: 保存历史列表到指定的历史文件-n
: 读历史文件中未读过的行到历史列表-p
: 展开历史参数成多行,但不存在历史列表中-s
: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
HISTSIZE
:命令历史记录的条数HISTFILE
:指定历史文件,默认为~/.bash_history
HISTFILESIZE
:命令历史文件记录历史的条数HISTTIMEFORMAT = "%F %T"
:显示时间HISTIGNORE = "str1:str2*..."
:忽略str1命令,str2开头的历史控制命令历史的记录方式:
环境变量:
HISTCONTROL
ignoredups
:默认,忽略重复的命令,连续且相同为“重复”ignorespace
:忽略所有以空白开头的命令ignoreboth
:相当于ignoredups
,ignorespace
的组合erasedups
:删除重复命令
export
变量名 = “值”存放在
/etc/profile
或~/.bash_profile