linux系统中如何使用history命令
这篇文章主要介绍了linux系统中如何使用history命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
history 命令用来显示执行过的命令,也可以根据显示的命令重新执行需要的命令。
使用 HISTTIMEFORMAT 显示时间戳
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身,如果你想要查看命令历史的时间戳,那么可以执行:
#exportHISTTIMEFORMAT='%F%T'#history|more12008-08-0519:02:39servicenetworkrestart22008-08-0519:02:39exit32008-08-0519:02:39id42008-08-0519:02:39cat/etc/redhat-release
注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。
使用 Ctrl+R 搜索历史
Ctrl+R 是我经常使用的一个快捷键,此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行pre该命令,如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。
#[PressCtrl+Rfromthecommandprompt,whichwilldisplaythereverse-i-searchprompt](reverse-i-search)`red‘:cat/etc/redhat-release[Note:Pressenterwhenyouseeyourcommand,whichwillexecutethecommandfromthehistory]#cat/etc/redhat-releaseFedorarelease9(Sulphur)
快速重复执行上一条命令
有 4 种方法可以重复执行上一条命令:
❝
1.使用上方向键,并回车执行。 2.按 !! 并回车执行。 3.输入 !-1 并回车执行。 4.按 Ctrl+P 并回车执行。
从命令历史中执行一个指定的命令
在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:
#history|more1servicenetworkrestart2exit3id4cat/etc/redhat-release#!4cat/etc/redhat-releaseFedorarelease9(Sulphur)
通过指定关键字来执行以前的命令
在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:
#!pspsaux|grepyproot169470.00.1365161264?Sl13:100:00ypbindroot175030.00.04124740pts/0S+19:190:00grepyp
使用 HISTSIZE 控制历史命令记录的总行数
将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:
#vi~/.bash_profileHISTSIZE=450HISTFILESIZE=450
使用 HISTFILE 更改历史文件名称
默认情况下,命令历史存储在 ~/.bash_history 文件中,添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:
#vi~/.bash_profileHISTFILE=/root/.commandline_warrior
使用 HISTCONTROL 从命令历史中剔除连续重复的条目
在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目,要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:
#pwd#pwd#pwd#history|tail-444pwd45pwd46pwd[Notethattherearethreepwdcommandsinhistory,afterexecutingpwd3timesasshownabove]47history|tail-4#exportHISTCONTROL=ignoredups#pwd#pwd#pwd#history|tail-356exportHISTCONTROL=ignoredups57pwd[Notethatthereisonlyonepwdcommandinthehistory,evenafterexecutingpwd3timesasshownabove]58history|tail-4
使用 HISTCONTROL 清除整个命令历史中的重复条目
上例中的 ignoredups 只能剔除连续的重复条目,要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:
#exportHISTCONTROL=erasedups#pwd#servicehttpdstop#history|tail-338pwd39servicehttpdstop40history|tail-3#ls-ltr#servicehttpdstop#history|tail-635exportHISTCONTROL=erasedups36pwd37history|tail-338ls-ltr39servicehttpdstop[Notethatthepreviousservicehttpdstopafterpwdgoterased]40history|tail-6
使用 HISTCONTROL 强制 history 不记住特定的命令
将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:
#exportHISTCONTROL=ignorespace#ls-ltr#pwd#servicehttpdstop[Notethatthereisaspaceatthebeginningofservice,toignorethiscommandfromhistory]#history|tail-367ls-ltr68pwd69history|tail-3
使用 -c 选项清除所有的命令历史
如果你想清除所有的命令历史,可以执行:
#history-c
命令替换
在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:
#lsanaconda-ks.cfganaconda-ks.cfg#vi!!:$vianaconda-ks.cfg
补充:使用 !$ 可以达到同样的效果,而且更简单。下例中,!^ 从上一条命令获得第一项参数:
#cpanaconda-ks.cfganaconda-ks.cfg.bakanaconda-ks.cfg#vi-5!^vianaconda-ks.cfg
为特定的命令替换指定的参数
在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:
#cp~/longname.txt/really/a/very/long/path/long-filename.txt#ls-l!cp:2ls-l/really/a/very/long/path/long-filename.txt
下例里,!cp:$ 获取 cp 命令的最后一项参数:
#ls-l!cp:$ls-l/really/a/very/long/path/long-filename.txt
使用 HISTSIZE 禁用 history
如果你想禁用 history,可以将 HISTSIZE 设置为 0:
#exportHISTSIZE=0#history#[Notethathistorydidnotdisplayanything]
使用 HISTIGNORE 忽略历史中的特定命令
下面的例子,将忽略 pwd、ls、ls -ltr 等命令:
#exportHISTIGNORE=”pwd:ls:ls-ltr:”#pwd#ls#ls-ltr#servicehttpdstop#history|tail-379exportHISTIGNORE=”pwd:ls:ls-ltr:”80servicehttpdstop81history[Notethathistorydidnotrecordpwd,lsandls-ltr]
感谢你能够认真阅读完这篇文章,希望小编分享的“linux系统中如何使用history命令”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。