设为首页 收藏本站
查看: 1129|回复: 0

[经验分享] linux下历史命令history使用方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-28 10:05:30 | 显示全部楼层 |阅读模式
在使用linux的时候,经常使用命令行控制操作系统,linux shell具有history功能,即会记录已经执行过的命令,那么有效的使用命令历史机制将会使工作效率得到极大的提升。    Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录在缓存中,可以用它来重复执行命令,这些命令会在用户退出时追加至历史文件中,一般保存在用户家目录下.bash_history文件中。默认保存1000条,也可以更改这个值。当用户再次登录shell时,会自动读取历史文件中记录下来的命令

history命令主要用于显示历史指令记录内容 ,下达历史记录中的指令。
语法:  history [-c] [-d offset] [n]
    history -anrw [filename]
    history -ps arg [arg...]
选项:  -c: 清空命令历史
    -d: 删除历史中指定的命令;
    #: 显示最近的#条历史
    -a: 追加本次会话新执行的命令历史列表至历史文件
    -n: 读历史文件中未读过的行到历史列表
    -r: 读历史文件附加到历史列表
    -w: 保存历史列表到指定的历史文件
    -p: 展开历史参数成多个行,但不存在历史列表中
    -s: 展开历史参数成一行,附加在历史列表后

命令行的历史记录有许多快捷使用的方法,熟练使用这些方法将极大提高工作效率:
重复使用命令:
重复前一个命令,有4种方法:
  • 重复前一个命令使用上方向键,并回车执行。
  • 按 !! 并回车执行。
  • 输入 !-1 并回车执行。
  • 按 Ctrl+p 并回车执行。


!字符串 :重复前一个以“字符串”开头的命令
!num   :按照history命令输出中的序号重复对应命令
!?字符串 :重复前一个包含"字符串"的命令
!-n   :重复n个命令之前的那个命令

使用up(向上)和down(向下)键来上下浏览从前输入 的命令
键入ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:

重复使用参数:

要重新调用前一个命令中最后一个参数:
  •     !$  ($表示最后)
  •     Esc, .(点击Esc键后松开,然后点击 . 键)
  •     Alt+ .(按住Alt键的同时点击 . 键)


调用历史参数:
#cmd !^ : 利用上一个命令的第一个参数做cmd的参数
#cmd !$ : 利用上一个命令的最后一个参数做cmd的参数
#cmd !* : 利用上一个命令的全部参数做cmd的参数
#cmd !:n  : 利用上一个命令的第n个参数做cmd的参数

调用历史命令中的历史参数

!n:^ 调用第n条命令的第一个参数
!n:$ 调用第n条命令的最后一个参数
!m:n 调用第m条命令的第n个参数
!n:* 调用第n条命令的所有参数

!string:^ 从命令历史中搜索以 string 开头的命令,并获取 它的第一个参数
!string:$ 从命令历史中搜索以 string 开头的命令,并获取它 的最后一个参数
!string:n 从命令历史中搜索以 string 开头的命令,并获取 它的第n个参数
!string:* 从命令历史中搜索以 string 开头的命令,并获取 它的所有参数

历史命令也有很多环境变量,这些变量一般都存放在/etc/profile文件或用户家目录下的.bash_profile文件中。这些变量分别为:
HISTSIZE:命令历史记录的条数;
HISTFILE:指定历史文件,默认为~/.bash_history;
HISTFILESIZE:命令历史文件记录历史的条数;
HISTTIMEFORMAT="%F %T"   显示时间
HISTIGNORE="str1:str2:… " 忽略string1,string2历史
控制命令历史的记录方式:环境变量:HISTCONTROL
    ignoredups:忽略重复的命令;连续且相同方为“重复”
    ignorespace:忽略所有以空白开头的命令
    ignoreboth:ignoredups, ignorespace
    erasedups:删除重复命令
如/etc/profile文件中定义了一些变量
    wKiom1eYbDGypOObAAAeAU-En7A358.jpg
可以修改这些变量以达到自己想要的结果
如:想要历史命令记录时间,就可以在定义HISTTIMEFORMAT="%F %T" wKioL1eYbuvT_a1FAAARiKKIuxc156.jpg
若要变量永久生效就要写入配置文件中,如,我们可以写在自己家目录下的.bash_profile中。这样就永久生效。当然写入/etc/profile中也是永久生效,但是是对服务器上所有用户都生效。

    能够熟练的使用历史命令,可以让我们很方便地编辑前面的某一条命令,而不用重复输入类似的命令。History命令的用途确实很大!但需要小心安全的问题!尤其是 root 的历史纪录档案,这是黑客们的最爱!因为不小心的 root 会将很多的重要资料在执行的过程中会被纪录在 ~/.bash_history 当中,如果这个档案被解析的话,后果不堪设想!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250548-1-1.html 上篇帖子: NFS 网络文件系统 下篇帖子: Cetnos环境下inotify+rsync实时同步 history linux 历史
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表