1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP

  通常情况下,当你在命令行中键入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

  [注:你也可以设置alias语句来查看最近的历史命令]

  alias h1='history 10'

  alias h2='history 20'

  alias h3='history 30'

  2、用Ctrl + R搜索历史命令

  我非常确信这应该是你最常使用的history特性,当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl +R然后输入关键字。 在以下示例中,我搜索“red”,则显示以前的命令中含有”red”的命令“cat/etc/redhat-release”。

  [注:在命令行提示符下按下Ctrl+R,终端将显示如下提示―reverse-i-search‖]

  (reverse-i-search)`red`: cat/etc/redhat-release

  [注:当看到你要的命令后按回车键,就可以重新执行这条命令了]

  #cat /etc/redhat-release

  Fedora release 9 (Sulphur)

  而有的时候你需要在执行一条历史命令之前编辑它.比如,你可以像下面那样搜索“httpd”,终端显示历史命令“service httpd stop”,选择它把“stop”改为“start”然后执行它

  [注: 在命令提示符下按 Ctrl+R , 将会显示提示符‖reverse-i-search‖]

  (reverse-i-search)`httpd`: service httpdstop

  [注: 看到你想要的命令后按下左键或者右键,就可以在执行这条命令之前编辑它了]

  # service httpd start

  3、四种不同的方法快速执行之前的命令

  有时出于某些原因你需要执行之前的命令,下面的四种方法可以用来重复最后执行的命令:

  1.用向上键(up arrow )查看上条命令,按回车执行。

  2.在命令行中输入!!并按回车。

  3.在命令行中输入!-1并按回车。

  4.按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)

  5、执行以特定字开头的历史命令

  输入!和你要重新执行的命令的前几个字母。在下面的例子中,输入!ps,回车,执行历史命令中以“ps”开头的“psaux | grep yp”

  #!ps

  psaux | grep yp

  root 16947 0.0 0.0 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

  6、用HISTSIZE控制历史命令的总数

  把下面的两行添加到.bash_profile然后重新登录bash(译者注:用source .bash_profile即可)查看有什么变化,在这个例子中,bash命令历史记录中只能储存450条命令。

  #vi ~/.bash_profile

  HISTSIZE=450

  HISTFLESIZE=450

  7、使用HISTFILE改变历史文件名

  默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登录shell,则.commandline_warrior文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。

  #vi ~/.bash_profile

  HISTFILE=/root/.commandline_warrior

  8、使用HISTCONTROL来消除命令历史中的连续重复条目

  在下面的例子中pwd被输入了三次,当你使用history的时候,你会看到这三条命令连续出现。设置HISTCONTROL为ignoredups,来消除重复命令:

  #pwd

  # pwd

  # pwd

  # history | tail -4

  44 pwd

  45 pwd

  46 pwd

  47 history | tail -4

  [注: 上面pwd被执行了三次之后,历史中有三条pwd命令]

  # export HISTCONTROL=ignoredups

  # pwd

  # pwd

  # pwd

  # history | tail -3

  56 export HISTCONTROL=ignoredups

  57 pwd 58 history | tail -4

  [注:即使上面pwd被执行了三次,历史中也只有一条pwd命令]

  9、使用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

  40 history | tail -6

  [注: 之前在pwd后面的servicehttpd stop命令被除去了]

  10、使用HISTCONTROL强制history忽略某条特定命令

  在执行一条命令时,你可以将HISTCONTROL设置为ignorespace并在该命令前加上一个空格来指示history忽略这条命令。可以预见的是,很多初级系统管理员将为他们能从history中成功隐藏某条命令而振奋。

  了解ignorespace的工作方式是很好。不过,实践中最好不要从history中去掩盖任何命令。

  #export HISTCONTROL=ignorespace

  # ls –ltr

  # pwd

  # service httpd stop

  [注: 在service的前面加上一个空格,以便在命令历史中忽略它]

  # history | tail -3

  67 ls –ltr

  68 pwd

  69 history | tail -3

  11、使用c选项清除所有的历史命令

  有时候你或许想要清除之前的历史命令。而你又想让history继续工作:

  #history –c

  12、替换命令历史中的内容

  当你搜索历史命令时,你可能希望执行一个与刚刚查找到的历史命令具有相同的参数的命令。 在本例中,vi之后的"!!:$" 可以将前一个命令的参数做为当前命令的参数。

  #ls anaconda-ks.cfg

  anaconda-ks.cfg

  # vi !!:$

  vi anaconda-ks.cfg

  在下面的例子中,紧跟在vi后的参数“!^”把上一个命令的第一个参数传递给当前命令。

  #cp anaconda-ks.cfg anaconda-ks.cfg.bak

  anaconda-ks.cfg

  # vi !^

  vi anaconda-ks.cfg

  13、替换特定命令的特定参数

  在下例中,!cp:2 在命令历史中查找以cp开头的命令,并将其第二个参数做为当前命令(ls -l)的参数。

  #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”中。

  #ls -l !cp:$

  ls -l /really/a/very/long/path/long-filename.txt

  14、用HISTSIZE禁用history

  如果你想禁用history,又不让bashshell记录你的命令,像下面那样把HISTSIZE设为0即可。

  #export HISTSIZE=0

  # history

  # [注: 执行history后没有显示任何信息]

  15、用HISTIGNORE让history在存储时忽略某些指令

  有时你不想在记录里看到诸如“pwd”,“ls”之类的基本指令,可以用HISTIGNORE忽略这些指令。

  注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls –l”。一定要准确的写出要忽略的的指令。

  #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

  [注: history命令不显示pwd和ls]

linux之history的更多相关文章

  1. Linux下history命令用法

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

  2. linux下history命令显示历史指令记录的使用方法

    Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...

  3. Linux下history命令详解---转载

    Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[www.linuxidc.com@linux]# history [n][ww ...

  4. [转]Linux Shell History (快速使用Linux命令)

    http://www.blogjava.net/lihao336/archive/2010/10/11/334367.html Linux Shell History (快速使用Linux命令) Li ...

  5. linux 修改history带有时间

    今天在网上学到了给linux的history添加时间.方法如下: 首先已知HISTTIMEFORMAT可以给history设置时间:临时修改直接赋值:HISTTIMEFORMAT="%F % ...

  6. [转帖]linux 清空history以及记录原理

    linux 清空history以及记录原理 自己的linux 里面总是一堆 乱七八槽输错的命令 用这个办法 可以清空 linux的内容. 清爽一些. 1.当前session执行的命令,放置缓存中,执行 ...

  7. Linux查看History记录加时间戳小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...

  8. [Linux] 关于 history 命令的简单使用

    1. 如果不想记录当前 会话操作的命令的话 可以使用命令 set +o history 但是这个命令有一个坏处, 他自己被记住了... 2. 还有一个办法 就是 在退出登录之前执行命令 history ...

  9. Linux:history命令详解

      Linux下History命令 主要用于显示历史指令记录内容, 下达历史纪录中的指令 . 语法 history [n] history [-c] history [-raw] histfiles ...

  10. 【转】Linux下history命令用法

    转自:http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你 ...

随机推荐

  1. java多线程之synchronized(线程同步)

    一.线程同步,主要应用synchronized关键字: public class TraditionalThreadSynchorinzed { public static void main(Str ...

  2. mongdb创建自增主键(primary key)的相关讨论 - Jason.Zhi

    根据mongodb官方文档介绍,如果在插入(insert)操作时,没有指定主键id,那么它会自动给插入行自动附上一个主键id.看起来不错,但是详细看看,就会发现这个id值有点复杂. 如下图: mong ...

  3. NativeInt

    NativeInt ni = 100; //Wrong. Will issue an Error NativeInt ni = NativeInt(100); //Correct System::Ge ...

  4. 【OpenOffice+swftools】在线预览环境的搭建和xpdf中文包的配置

    [环境参数] Host:Win7 64bit VMware:VMware Workstation11.1.0 Client OS:CentOS release 6.5 (Final) 2.6.32-4 ...

  5. [原创]Devexpress XtraReports 系列 8 创建Drill-Through报表

    哎,今天公司工作忙了一天,一直没有时间写写东西.所以只能昨天晚上加班写咯.苦逼啊...... 昨天发表了Devexpress XtraReports系列第七篇[原创]Devexpress XtraRe ...

  6. Javascript中的数据类型之旅

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number.String.Boolean.Object.Udefined.Null.其中,Object属于复杂数据类型, ...

  7. 转载 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一&二)——初识WiX

    转载fromVan Pan 的专栏   http://blog.csdn.net/rryqsh/article/details/8274832 http://blog.csdn.net/rryqsh/ ...

  8. android Intent的startActivityForResult()方法

    startActivityForResult() 之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.A ...

  9. winform 发布应用程序 提示 “未能注册模块(程序路径)\ieframe.dll”

    程序安装的时候出现未能注册模块(程序路径)\ieframe.dll提示 这种情况的出现,是因为引用的shdocvw.dll,目前发现了一个折中的解决方法,在安装程序里面,可以看到ieframe.dll ...

  10. ECharts地图中tooltip提示框通过formatter分别显示多个数值

    我原来的CSDN博客上写过这篇文章:http://blog.csdn.net/giscript/article/details/52162165 但是现在发现了代码中存在一个bug,在此更正. 按照原 ...