如果你经常使用 Linux 命令行,那么使用 history命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 若干个用法。

使用 HISTTIMEFORMAT 显示时间戳  
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

引用
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release

还有其他的参数可供使用:

引用
export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

使用 Ctrl+R 搜索历史  
Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。

引用
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]
(reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command, which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

快速重复执行上一条命令  
有 4 种方法可以重复执行上一条命令:

使用上方向键,并回车执行。 
按 !! 并回车执行。 
输入 !-1 并回车执行。 
按 Ctrl+P 并回车执行。 
从命令历史中执行一个指定的命令 
在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:

引用
# history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

通过指定关键字来执行以前的命令  
在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:

引用
# !ps
ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

使用 HISTSIZE 控制历史命令记录的总行数  
将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:

引用
# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

使用 HISTFILE 更改历史文件名称  
默认情况下,命令历史存储在 ~/.bash_history 文件中。添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:

引用
# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

使用 HISTCONTROL 从命令历史中剔除连续重复的条目  
在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:

引用
# pwd
# pwd
# pwd
# history | tail -4
44 pwd
45 pwd
46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
47 history | tail -4
# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56 export HISTCONTROL=ignoredups
57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
58 history | tail -4

使用 HISTCONTROL 清除整个命令历史中的重复条目  
上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:

引用
# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38 pwd
39 service httpd stop
40 history | tail -3
# ls -ltr
# service httpd stop
# history | tail -6
35 export HISTCONTROL=erasedups
36 pwd
37 history | tail -3
38 ls -ltr
39 service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40 history | tail -6

使用 HISTCONTROL 强制 history 不记住特定的命令  
将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:

引用
# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [注意,命令以空格开头,历史记录中就不会记录这条命令了]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

使用 -c 选项清除所有的命令历史  
如果你想清除所有的命令历史,可以执行:

# history -c

命令替换  
在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:

引用
# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

下例中,!^ 从上一条命令获得第一项参数:

引用
# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi -5 !^
vi anaconda-ks.cfg

为特定的命令替换指定的参数  
在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:

引用
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -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:

引用
# export HISTSIZE=0
# history
# [Note that history did not display anything]

使用 HISTIGNORE 忽略历史中的特定命令  
下面的例子,将忽略 pwd、ls、ls -ltr 等命令:

引用
# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# service httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]

补充:编辑并运行历史命令
可以使用下面的命令来修改某个历史命令记录,并执行

引用
# history
# fc n

这个n表示某个历史命令的序号,这将打开一个文本编辑窗口并显示这条命令(例如Vi、Emacs)。然后你可以编辑修改这条命令,让它满足你的需要。当你退出这个编辑窗口时,该命令就会得到执行。

History命令用法相关推荐

  1. linux设置历史命令行数,Linux设置history命令显示行数以及时间

    Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录 但是,这个记录并不包含时间项目 因此只能看到命令,但是不知道什么时间执行的 如何让history记录时间呢? 解决方案 ...

  2. linux下history(历史)命令用法详解

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的15个用法. 1. 使用 HISTTIMEFORMA ...

  3. History(历史)命令用法

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的用法. 使用 HISTTIMEFORMAT 显示时间 ...

  4. History(历史)命令用法 15 例

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...

  5. linux查看历史的所有命令,linux查询历史记录命令history的用法介绍

    一.什么是history在bash功能中,它能记忆使用过的命令,这个功能最大的好处就是可以查询曾经做过的举动! 从而可以知道你的运行步骤,那么就可以追踪你曾下达过的命令,以作为除错的工具! 二.His ...

  6. linux帮助命令和用法,Linux命令帮助及history命令的使用

    1.Linux命令帮助的获取详解 在Linux中获取命令帮助时,内部命令和外部命令的获取方式是有区别的: 即 (1)内部命令:#help COMMAND ?            #man bash ...

  7. linux命令history作用,Linux命令:history命令历史的管理及用法

    bash可以保存的过去曾经执行过的命令.当某个用户登录到shell中,会读取该用户家目录中的~/.bash_history文件,并将历史命令列表保存到内存中.当用户退出当前shell时,会将内存中的历 ...

  8. python中history()_keras中的History对象用法

    keras中的fit_generator和fit函数均返回History对象,那么History怎么用呢?事实上History对象已经记录了运行输出.在了解之前,我们甚至自己定义回调函数记录损失和准确 ...

  9. Linux学习总结(75)—— Linux history 命令实用技巧

    一.基本原理 Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件.当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_his ...

最新文章

  1. Docker容器入门-基本命令的使用
  2. 登录界面的滑动_电脑同时登录两个微信,原来这么简单?3步搞定!
  3. Tails 3.13 发布,更新 Intel 微码,改进拼音输入法支持
  4. php支付宝h5 app,H5网站接入支付宝的支付接口
  5. Vue页面骨架屏(一)
  6. docker-ce安装
  7. [转]Oracle中字符集的类型决定varchar2的字符长度
  8. no identity found Command /usr/bin/codesign failed with exit code 1 报错解决方法
  9. HDFS副本放置策略
  10. VB ListBox 添加不重复的值
  11. 六石管理学:谈谈工作技能培训
  12. php有的图片显示不出来,图片显示不出来,但是数据库里有显示
  13. StanfordDB class自学笔记 (5) JSON Data
  14. 专访Nick McKeown:网络领域的游戏颠覆者
  15. mysql安装+navicat激活
  16. 【竞赛篇-国创(大创)结题】国创(大创)立项后的基本流程、需要用什么结题、如何快速结题
  17. 3dmax安全工具3ds Max Scene Security Tools
  18. XLua官方Examples 08_Hotfix 热补丁的示例【2】
  19. 基于JSP的学术交流论坛系统的设计与实现
  20. 【VScode技巧】:VScode界面显示模糊

热门文章

  1. (7)C#里的线程和流
  2. POJ-2386-Lake Counting
  3. C++: byte和int的相互转化
  4. C#调用USER32.DLL的API函数
  5. 人类已无法阻挡AI?围棋后AI再破最强人类堡垒,通杀智力比赛
  6. 法媒评马云996:亚洲独有的洗脑我们不懂
  7. 让C/C++程序员告诉你什么叫浪漫,表白黑科技
  8. html太极图代码静态_如何做URL静态化?和页面的静态化
  9. python一次性输入10个数_python如何一次性输入多个数
  10. css3宽度变大动画_不会仪表?太尴尬了。14种动画让你轻松掌握各种流量计工作原理...