继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Linux 基础教程 44-history命令

精慕HU
关注TA
已关注
手记 240
粉丝 24
获赞 115

什么是history

    在Linux系统日积月累的使用中,我们会输入很多命令。而在我们想重复上一个命令时,通过使用方向键向上翻就可以查看我们已经输入和使用过的命令。那大家有没有想过这个命令保存在什么地方,最大又会保存多少条记录了?今天我们就来学习history命令。
    从history字面意思就可以知道该命令主要用于查看用户曾经输入和使用过的命令。使用该命令可以减少我们日常重复输入命令的次数。其常用选项如下所示:

选项说明
-c清除历史命令
-d offset删除指定位置的history命令
-a添加新的历史命令记录
-r从historyfile读取历史记录做为当前的历史记录
-w将当前的历史记录保存并覆盖到historyfile中

常用用法

重复上一次的执行命令

    在日常使用过程中,最常用的场景就是==重复执行上一次的命令==,对于这种场景,我想大家用得最多应当是使用方向键向上或向下进行翻滚来实现吧。但可以实现这种场景共有4种方法,分别如下:

  • 使用方向键向上或向下翻滚,按Enter键

  • 输入!!,按Enter键

  • 输入!-1,按Enter键

  • 输入Ctrl+P,按Enter键

重复执行指定的命令

    在日常使用过程,我们不仅仅希望执行上一次的命令,而是想执行指定的历史命令时,则有两种方法

  • 指定ID,则可以使用!HistoryID,如我们想执行historyID为1993的命令,则可以按以下形式进行输入

[root@localhost ~]# !1993
  • 指定命令进行模糊查询,则可以使用!HistoryCmd,==这里搜索的命令从最后一条历史记录向前搜索,找到满足条件的命令即执行==,示例如下:

[root@localhost ~]# cat -n ~/.bash_history | grep du
   562  du -ah --exclude="*/.*" .   564  du -ah .   565  du -ah . | more   566  du -ah --exclude="*/.*" .   567  du -h --max-depth=1 /   568  du -h --max-depth=1 / | sort -hr
[root@localhost ~]# !du#找到离当前最近执行的命令du -h --max-depth=1 / | sort -hr

搜索曾经执行的命令

    在Window中如果大家要搜索文件常用快捷键Ctrl+F,而Linux中搜索曾经执行过的命令则使用快捷键Ctrl+R

# 在当前Shell中按Ctrl+R,而后输入命令即可(reverse-i-search)`du': cat -n ~/.bash_history | grep du

给历史命令添加时间戳

# 预先定义一个环境变量[root@localhost ~]# export HISTTIMEFORMAT=' %F %T 'root@localhost ~]# history
 1009   2018-08-14 23:18:22 pidof sshd 1010   2018-08-14 23:18:22 pidof -o 1995
 1011   2018-08-14 23:18:22 pidof sshd -o 1995

清除历史命令

    虽然历史命令方便和减少日常需要输入执行命令的时间,但也会存在安全隐患。如果不小心在历史命令输入连接其他Linux的地址、MySQL等密码。一旦出现系统被黑掉或被非管理员看到,则可能存在严重的隐患,这时候大家肯定会想到清除历史命令。这时可以使用-c选项

[root@localhost ~]# history -c

    在使用以下选项,就真的把历史命令给清空了吗?答案当然不是。在下次重新登录后,历史命令依然存在,这是什么原因?

-c 选项只是暂时把Linux系统内存中的历史命令给清空,当用户退出时,就不会有历史命令记录追加到.bash_history中,当用户重新登录后,系统会重新加文件.bash_history,而历史命令便又会重新显示出来了。

    真正能完全清空历史命令的做法如下:

  • 方法一:

[root@localhost ~]# history -c ; history -w
  • 方法二:清空~/.bash_history文件

[root@localhost ~]# echo "" > ~/.bash_history

history配置

  • 设置历史记录时间:

[root@localhost ~]# export HISTTIMEFORMAT=' %F %T '
  • 控制历史命令记录个数

#设置内存中保存的命令记录个数[root@localhost ~]# export HISTSIZE=300# 设置.bash_history中保存的命令记录个数[root@localhost ~]# export HISTFILESIZE=300
  • 更改默认保存文件
        系统默认配置会将历史命令保存到~/.bash_history中,如果要保存到其他文件,可以按以下方法进行更改

[root@localhost ~]# export HISTFILE=~/.historycmd.txt
  • 其他配置

# 清除整个命令历史记录中的重复记录[root@localhost ~]# export HISTCONTROL=erasedups# 忽略命令历史记录中连续重复的记录[root@localhost ~]# export HISTCONTROL=ignoredups# 忽略命令历史记录中以空格开始的记录[root@localhost ~]# export HISTCONTROL=ignorespace# 忽略命令历史记录的重复记录和以空格开始的记录[root@localhost ~]# export HISTCONTROL=ignoreboth

原文出处:https://www.cnblogs.com/surpassme/p/9568594.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP