一天一命令-history

前端之家收集整理的这篇文章主要介绍了一天一命令-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,互相交流。

猜你在找的Bash相关文章