微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一天一命令-history

一天一命令-history


系统软硬件环境平台:

VMware Workstation Pro 12.5.5 build-5234757

CentOS Linux release 7.3.1611

软件版本:bash --version

GNU bash,version 4.2.46(1)-release (x86_64-redhat-linux-gnu)

测试时间:2017年5月29日


history-display or manipulate the history list.(显示或者处理命令历史)

helphistory
infohistory
manbash

history命令格式和选项3种:

history[-c][-doffset][n]
history-anrw[filename]
history-psarg[arg...]
n:显示最近的n条命令
-c:清空当前的命令历史记录
-doffset:删除历史中指定的第几条命令
-a:追加本次会话中新执行的命令列表到历史文件.bash_history中
-n:读历史文件中未读过的行到历史列表
-r:读取历史文件附加到当前会话的历史列表(与-a相对)
-w:保存历史列表到指定的历史文件中
-p:展开历史参数成多行,但不保存在历史列表中
-s:展开历史参数成一行,附加在历史列表后


快捷键搜索匹配

执行上一个命令:向上方向键;按!!;输入!-1;多次按Ctrl+p重复显示之前的命令(同向上方向键)

执行下一个命令:向下方向键;或多次按Ctrl+n

执行历史中的某条命令:!n !22

执行倒数第n个命令:!-n !-4

执行最近的以字符串开头的命令:!keyword !service

执行最近的包含关键字的命令:!?keyword !?share

执行上一条命令的第n列命令或参数,常用于写脚本:!:n(!:0执行第0列命令,!:1执行第1列命令或参数)

搜索历史命令:Ctrl+r,退出Ctrl+g

重新调用一个命令中的最后一个参数:!$ ; Esc,.(按Esc松开再按.键);Alt+.(按住Alt同时按.键)


!string:p 仅打印出最近的以字符串开头的命令历史而不执行

!$:p 打印输出!$(即上一条命令的最后一个参数)的内容

!*:p 打印输出!*(即上一条命令的所有参数)的内容

^string 删除上一条命令中的第一个string

^string1^string2 将上一条命令中的string1替换为string2

!:gs/string1/string2 将上一条命令中的所有的string1都替换为string2


调用历史参数

cmd !^ 利用上一条命令的第一个参数作为当前cmd的参数

cmd !$ 利用上一条命令的最后一个参数作为当前cmd的参数

cmd !* 利用上一条命令的全部参数作为当前cmd的参数

cmd !:n 利用上一条命令的第n个(列)参数作为当前cmd的参数


cmd !n:^ 调用第n条命令的第一个参数

cmd !n:$ 调用第n条命令的最后一个参数

cmd !n:m 调用第n条命令的第m个参数

cmd !n:* 调用第n条命令的所有参数


cmd !string:^ 从命令历史中搜索以string开头的命令,并获取它的第一个参数

cmd !string:$ 从...最后一个参数

cmd !string:n 从...第n个参数

cmd !string:* 从...所有参数


命令历史相关环境变量

HISTSIZE:命令历史记录的条数,定义大小的文件为/etc/profile

HISTFILE:指定命令历史文件认为~/.bash_history,注销后系统自动将history命令列表写入此文件

HISTFILESIZE:上面指定的命令历史文件所记录的条数

HISTTIMEFORMAT='%F %T ':显示命令执行的时间

HISTIGnorE="str1:str2:...":忽略str1:str2:..的命令历史,也可以加*号模糊匹配,如hostname*:pwd

HISTCONTROL:命令历史控制变量,ignoredups认,ignorespace忽略空白开头,ignoreboth前两个,erasedups删除重复命令


案例:

#history
#wc-l.bash_history
#history-c//清除命令历史,但不清除.bash_history文件内容
#history-d4//删除第4条命令,后续命令会自动往前补充
#history4//显示最近的4条命令
#history-p`pwd``ls`//执行命令但不保存在历史列表中
#history-s"rm-rfaaa"//不执行命令,只是将命令追加到历史列表中

#!ls//执行以ls开头的命令
ls/home/
abc/usera/
#!?init//执行包含init的命令
ls/etc/init.d/
functionsnetconsolenetworkREADME
#!l:p//仅打印出以l开头的命令而不执行
ls/etc/init.d:p
#id-uusera
1000
#^usera^root//参数替换
id-uroot
0

#ll/etc/issue
#cat!$
file(按键Esc,.)//命令显示为file/etc/issue,即调用上一条命令的参数

#ls-l/home/usera
#!:0//显示第0列的命令
ls
#!:2//显示第2列的参数
/home/usera

临时生效
echo$HISTTIMEFORMAT
HISTTIMEFORMAT='%F%T'
永久生效
将定义的环境变量写入/etc/profile或~/.bash_profile中
vi~/.bash_profile
exportHISTTIMEFORMAT='%F%T'

彻底清空命令历史
rm-rf.bash_history
history-c
exit


文章为个人学习总结,如有任何问题,可发送邮件至729815616@qq.com,互相交流。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐