≡菜单

15个掌握Linux命令行历史记录的示例

重击命令行图像当您频繁使用Linux命令行时,有效地使用历史记录可以大大提高生产力。实际上,一旦您掌握了15个示例’在这里提供您’我会发现使用命令行更加有趣。

1.使用HISTTIMEFORMAT显示时间戳

通常,当您从命令行键入历史记录时,它将显示命令号和命令。出于审核目的,如下所示,将timepstamp和命令一起显示可能会有所帮助。

# 导出HISTTIMEFORMAT ='%F %T '
# 历史 | 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 猫/ etc / 红hat-release

2.使用Control + R搜索历史记录

我坚信,这可能是您历史上最常用的功能。当你’如果已经执行了很长的命令,您可以简单地使用关键字搜索历史记录并重新执行同一命令,而不必完全键入它。 按Control + R并输入关键字。在以下示例中,我搜索了 ,它显示了上一个命令“猫/ etc / 红hat-release”在包含红色的历史记录中。

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`': 猫/ etc / 红hat-release
[Note: 按 enter when you see your command,
which will execute the command from the 历史]
# 猫/ etc / 红hat-release
Fedora release 9 (Sulphur)

有时您想要在执行命令之前从历史记录中对其进行编辑。例如你可以搜索 httpd,这将显示 服务httpd停止 从命令历史记录中,选择此命令,然后 更改停止开始和re-execute it again 如下所示。

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': 服务httpd停止
[Note: 按 either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3.使用4种不同的方法快速重复上一个命令

Sometime you may end up repeating the previous commands for various reasons. Following are the 4 different ways to repeat the 持续 executed command.

  1. 使用 向上箭头 查看上一个命令,然后按Enter执行。
  2. 类型 !!和press enter from the 命令行
  3. 类型 !-1和press enter from the 命令行.
  4. Control + P 将显示上一个命令,按Enter执行

4.从历史记录中执行特定命令

在以下示例中,如果要重复命令#4,则可以执行 !4 如下所示。

# 历史 | more
1  service network restart
2  exit
3  id
4  猫/ etc / 红hat-release

# !4
猫/ etc / 红hat-release
Fedora release 9 (Sulphur)

5.执行以特定单词开头的上一个命令

输入!然后是您要重新执行的命令的开头几个字母。在下面的示例中,键入!ps并输入,执行了以ps开头的上一个命令,即‘ps aux | grep yp’.

# !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

6.使用HISTSIZE控制历史记录中的总行数

将以下两行添加到.bash_profile,然后再次重新登录bash shell以查看更改。在此示例中,仅450命令将存储在bash历史记录中。

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

7.使用HISTFILE更改历史记录文件名

默认情况下,历史记录存储在 〜/ .bash_history 文件。将以下行添加到.bash_profile中,然后重新登录到bash shell,以将history命令存储在.commandline_warrior文件而不是.bash_history文件中。一世’我还没有找到实际的用途。当您要跟踪使用不同历史文件名从不同终端执行的命令时,我可以看到这种用法。

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

如果您有充分的理由更改历史记录文件的名称,请与我共享,因为我’我有兴趣了解您如何使用此功能。

8.使用HISTCONTROL消除历史记录中的连续重复输入

在下面的示例中,pwd被键入了3次,当您进行历史记录时,您可以看到它的所有3次连续出现。要消除重复,请将HISTCONTROL设置为ignoreups,如下所示。

# pwd
# pwd
# pwd
# 历史 | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in 历史, after
executing pwd 3 times as shown above]
47  历史 | tail -4

# 导出HISTCONTROL = ignoredups
# pwd
# pwd
# pwd
# 历史 | tail -3
56  导出HISTCONTROL = ignoredups
57  pwd [Note that there is 上ly 上e pwd command in the 历史, even after
executing pwd 3 times as shown above]
58  历史 | tail -4

9.使用HISTCONTROL删除整个历史记录中的重复项

上面显示的被忽略的up仅在重复命令是连续命令时才将其删除。要消除整个历史记录中的重复项,请将HISTCONTROL设置为“擦除”,如下所示。

# 导出HISTCONTROL =已擦除
# pwd
# 服务httpd停止
# 历史 | tail -3
38  pwd
39  服务httpd停止
40  历史 | tail -3

# ls -ltr
# 服务httpd停止
# 历史 | tail -6
35  导出HISTCONTROL =已擦除
36  pwd
37  历史 | tail -3
38  ls -ltr
39  服务httpd停止
[Note that the previous 服务httpd停止 after pwd got erased]
40  历史 | tail -6

10.使用HISTCONTROL强制历史记录不记住特定命令

执行命令时,可以通过将HISTCONTROL设置为ignorespace并在命令前面键入一个空格来指示历史记录来忽略该命令,如下所示。我可以看到许多初级系统管理员对此感到兴奋,因为他们可以从历史记录中隐藏命令。很好地了解ignorespace是如何工作的。但是,最好的做法是’不要故意隐藏历史上的任何东西。

# 导出HISTCONTROL =忽略空间
# ls -ltr
# pwd
#  服务httpd停止 [Note that there is a space at the beginning of service,
to ignore this command from 历史]
# 历史 | tail -3
67  ls -ltr
68  pwd
69  历史 | tail -3

11.使用选项-c清除所有以前的历史记录

有时您可能希望清除所有以前的历史记录,但希望保持历史记录向前发展。

# 历史-c

12.从历史命令中替换单词

在历史记录中搜索时,您可能想要执行其他命令,但使用与您所使用命令相同的参数’ve just searched.

在下面的示例中, !!:$ vi命令旁边的参数将前一个命令的参数传递到当前命令。

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

在下面的示例中, !^ vi命令旁边的命令将第一个参数从前一个命令(即cp命令)传递到当前命令(即vi命令)。

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi  !^
vi anaconda-ks.cfg

13.将特定参数替换为特定命令。

在下面的示例中, cp:2 在历史记录中搜索以cp开头并采用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:$ searches for the previous command in 历史 that starts with cp and takes the 持续 argument (in this case, which is also the second argument as shown above) of cp and substitutes it for the ls -l command 如下所示。

# ls -l cp:$
ls -l /really/a/very/long/path/long-filename.txt

14.使用HISTSIZE禁用历史记录的使用

如果您想一起禁用历史记录并不要’希望bash shell记住您的命令’键入后,将HISTSIZE设置为0,如下所示。

# export 历史记录=0
# 历史
# [Note that 历史 did not display anything]

15.使用HISTIGNORE忽略历史记录中的特定命令

有时,您可能不想使用诸如pwd和ls之类的基本命令来弄乱历史记录。使用HISTIGNORE指定您要从历史记录中忽略的所有命令。请注意,在HISTIGNORE中添加ls仅忽略ls,而不忽略ls -l。因此,您必须提供您希望从历史记录中忽略的确切命令。

# 出口HISTIGNORE ="pwd:ls:ls -ltr:"
# pwd
# ls
# ls -ltr
# 服务httpd停止

# 历史 | tail -3
79  出口HISTIGNORE ="pwd:ls:ls -ltr:"
80  服务httpd停止
81  历史
[Note that 历史 did not record pwd, ls and ls -ltr]

推荐读物

重击 101骇客,作者:Ramesh Natarajan。我大部分时间都花在Linux环境上。所以我自然’我是Bash命令行和Shell脚本的忠实拥护者。 15年前,当我从事不同口味的* nix时,我曾经在C Shell和Korn Shell上编写了大量代码。后来,当我开始以系统管理员的身份在Linux上工作时,我几乎可以使用Bash shell脚本自动化所有可能的任务。根据我的Bash经验,我’编写了Bash 101 Hacks电子书,其中包含有关Bash命令行和Shell脚本的101个实用示例。如果你’我一直在考虑精通Bash,请帮自己一个忙,阅读本书,这将帮助您控制Bash命令行和Shell脚本。

很棒的Linux文章

以下是一些很棒的 15个例子 您可能会觉得有帮助的文章。

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

重击 101骇客书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 122 评论… 加一 }

  • digifuzz 2008年8月11日,上午8:05

    嘿,谢谢。我实际上学到了我做过的一些事情’不知道我以前能做。

  • Webfreakz 2008年8月11日,上午11:04

    哇!很有用!谢谢=)

  • 基思·杜萨(Keith Dsouza) 2008年8月11日,晚上9:14

    很酷的花招,肯定会对我有用,加入书签以供参考。

  • 金玻璃 2008年8月12日,下午3:36

    观察:

    It’从标题和引言中还不清楚,本文适用于bash shell。我意识到bash是默认的shell,因此实际上与“Linux命令行”,但用户可能还会遇到其他外壳,尤其是在使用最少的救援环境的情况下。在前面明确提到bash可能会有所帮助,这样人们就不会’如果这些提示不对,不要感到困惑’无法正常工作。或者,如果给定的示例存在一些差异,则可能会显示一些常见的shell差异。
    甚至可以简单地解释一下‘command line’和贝壳,使人们可以学习’s really going 上.

    很棒的文章。

  • 拉梅什 2008年8月12日,下午5:49

    @AurGlass,

    感谢您的反馈。喜欢你’提到过,我省略了它,因为Linux中的默认shell是bash。你提出了一个非常有效的观点,我’在以后的文章中请牢记这一点。

  • 弗兰克 2008年8月12日,下午6:51

    描述了我发现使用HISTFILE更改历史记录文件名的最佳原因 这里。因此,每个管理员都可以获取自己的超级用户历史记录。希望’s您在寻找什么。

  • 迈克 2008年8月12日,晚上9:17

    很棒的文章,非常方便。

    my new favourite feature of 重击 is using . to put the 持续 argument of the previous command into your new command..something like this:

    mkdir some_dir_name
    光盘

    some_dir_name将出现在您的cd行中。

  • ta 2008年8月12日,晚上10:41

    自动挂载公用主目录时,如果要为登录的每个主机使用单独的历史记录文件,请使用histfile。

    导出HISTFILE =〜.bash_history.d / $ HOSTNAME

  • pwc101 2008年8月13日,上午12:24

    I 科幻nd the !$ syntax for the 持续 argument of the previous command quicker to type than !!:$ mentioned in 12. Likewise using !:1, !:2 for the previous arguments (starting with !:0 as the 科幻rst).

  • 马丁 2008年8月13日,上午2:39

    非常有用的文章,非常感谢

  • 戈登·舒尔茨 2008年8月13日,上午2:44

    很棒的文章,谢谢。我做了很多事情’以前不知道,非常有帮助!

  • 迈克 2008年8月13日,上午8:32

    heh..my esc key was eaten in my above comment. that should read 退出 。

    不只是 。

  • 拉梅什 2008年8月13日,上午8:54

    @ 弗兰克,@ ta,

    感谢您与示例分享使用HISTFILE的原因。

    @miker,

    “esc .”将前一个命令的参数替换为当前命令绝对是一个好用。谢谢你的提示。

    @ pwc101,

    我同意,参数编号可能更易于使用。感谢您的反馈。

  • 一只狐狸 2008年8月13日,下午5:00

    I’我是具有时间戳历史的忠实拥护者。当您使用时派上用场’试图证明您的客户使他的Linux服务器变砖了。 --

  • 阿吉斯·埃达瑟里 2008年8月14日,上午2:51

    大提示拉梅什。我没有’找不到不找的借口-

    干杯,
    阿吉斯

  • Dethmetaljeff 2008年8月15日,下午5:36

    you can also use !$ instead of !!:$ to retreive the 持续 argument from the 持续 command

    mkdir -p真正/深层/目录/树
    cd!$

    将带您进入真正/深层/目录/树

  • 重击 2008年8月15日,下午8:42

    对于12号,Alt +。 (Alt +点)快得多。

  • Zaheer M K 2008年8月16日,上午7:45

    你好拉梅什,

    优秀的帖子!

    我以前从来都不知道这一切。

    非常感谢您的启发。

    保持写作。

    Zaheer。

  • 匿名 2008年8月23日,上午11:11

    #12可以缩短为!$,这会更快一些。

  • 杰夫 2008年9月3日,晚上9:10

    Ctrl-R。新的最爱!谢谢。 -j

  • 卓兰达摩达兰 2008年9月10日,上午6:26

    很好…thanks a lot

  • 埃乌德·范·克雷尼斯特 2008年9月11日,上午5:02

    非常丰富的帖子!
    谢谢

  • 拉梅什 2008年9月13日,下午12:47

    @ Dethmetaljeff,bash,miker,anon,

    感谢您指出替代 Example#12。即代替 !!:$,following也可以用来替代前一个参数。

    1. vi !!:$
    2. vi !$
    3. vi Alt-key + .
    4. vi Esc-key + .

  • 让·吕克·拉克鲁瓦 2008年9月30日,上午1:11

    到目前为止,我已找到有关history命令的最全面的教程。

    干得好!谢谢。

  • 罗珊·巴塔拉伊(Roshan Bhattarai) 2008年10月2日,上午10:14

    哇……..great list dude……..感谢分享……..

  • 基督教 2008年10月27日,下午2:16

    嗨,我很喜欢,但是我对RedHat Linux kernel.com的一些了解。2.4.20-8#1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU / Linux
    给出的命令没有’t work:
    export 历史记录格式 =’%F%T‘
    我正在运行bash,如下输出所示:
    [[email protected] 根]# 回声$SHELL
    / bin / 重击
    有任何想法吗?
    谢谢
    基督教

  • 尼哈尔 2008年10月29日,下午8:31

    简直太棒了。这将对我有很大帮助-–办公室的日常开发工作。

  • 木户 2008年11月3日,晚上11:34

    这是一篇很棒的文章。这些技巧有助于使命令行使用更加有趣和流畅。谢谢

  • 谭大卫 2008年12月8日,下午12:08

    不错的清单。谢谢!

  • 维卢萨米 2009年1月5日,上午1:32

    优秀的职位

  • 沙姆拉 2009年1月16日,晚上10:44

    你好

    本文非常有用,实际上更有用。我需要您的所有帮助,我希望history命令应该显示日期为:time:servername:userid:user的命令’s主机名或ip:命令,用于监视。

    同时,我必须在文件中捕获用户输入的命令是什么,然后文件重定向到某个位置。

    在这方面,您的帮助会得到更多的赞赏。这将在Red Hat Linux中实现

    问候
    沙姆拉

  • 长gar 2009年1月18日,下午1:44

    你好

    真的很棒的技巧yaar…..我不知道命令的历史记录是这样的…非常感谢,并请发表以上文章..这将教育像我这样的极客….

  • 长gar 2009年1月18日,下午1:46

    嗨sharmila ..

    我是从事RHEL的一家保险公司的系统管理员。你呢?我目前正在尝试Ubuntu8.1桌面版本。真的是一个很棒的操作系统。

  • 拉梅什 2009年1月21日,上午1:22

    本文非常好,您对Linux中的History命令给出了很好的解释,’s very useful

  • 扼杀 2009年1月25日,下午3:13

    你好
    > # export 历史记录格式 =’%F%T‘
    > #历史 | more
    > 1 2008年-08-05 19:02:39 service network restart
    > 2 2008年-08-05 19:02:39 exit
    有没有可能查看这种格式的历史记录而无需“export 历史记录格式 =’%F%T“.
    如果不—如何从HISTTIMEFORMAT删除(清除)“%F%T”?
    谢谢!

  • 麦克斯韦 2009年4月2日,下午3:16

    很棒的网站,很棒的文章,很棒的评论部分。

  • 汤姆 2009年5月20日,上午1:23

    嗨!

    这是一个非常广泛和有用的描述。我很多年前就从事AIX的工作。有一种方法,我可以在vi模式下处理历史记录。我不’记不清了。可能有一个先决条件设置:EDITOR环境变量?
    而且,我可以使用ESC + K进入vi模式。

    现在我’m using RHEL, and I’我正在搜索’也在Linux中工作。

    问候

    汤姆

  • 汤姆 2009年5月25日,上午2:44

    嗨!

    I’am again. I’ve found it:

    设置-o vi

    而进入vi模式仅是通过ESC。

    汤姆

  • Parag Dixit 2009年6月10日,下午12:25

    很棒的文章!!!
    此页面立即进入我的收藏夹…
    我一直在寻找Ctrl-R之类的快捷方式,但这对我不起作用。一个朋友建议改用Alt-P,我广泛使用它…

  • 提鲁 2009年6月12日,上午5:14

    大家好,

    任何人都可以在linux上帮助我
    1.如何检查2或3周的登录日志以及时间和日期。
    *我已经从这个论坛和许多其他论坛尝试了很多命令。

    请帮我 !!!!!!!!!

  • 斯里尼瓦斯·安塔尔韦迪 2009年6月17日,上午1:31

    谢谢你的帖子

    我发现了
    历史记录格式,
    HISTIGNORE,
    历史记录在多用户环境中非常有用。

    当发生灾难要追踪时,HISTTIMEFORMAT会很有用
    与服务中断电子邮件通知可比的时间

  • 拉梅什·纳塔拉詹(Ramesh Natarajan) 2009年6月21日,上午12:12

    @ 让·吕克·拉克鲁瓦,Roshan,Nihar,Muthu,DavidTan,Velusamy,Ramesh,Nagaraju,

    非常感谢您的评论。一世’我很高兴您发现本文很有用。
     
    @麦克斯韦,

    是的本文的评论部分非常吸引人,我’对所有对本文发表评论的人都非常感谢。
     
    I’我希望阅读此评论部分的每个人都需要一些时间 发表回应.
     

    @基督教,

    我在Red Hat Linux上尝试过,它可以正常工作。我尝试使用2.6内核。但是,我不’认为这是您的问题。
    您能否确定键入以下命令,而不是复制/粘贴。有时,复制/粘贴可能会做一些奇怪的事情。

    $ 导出HISTTIMEFORMAT =' %F %T';
    

     
    @Strang,
    为什么要不使用HISTTIMEFORMAT以这种格式显示历史记录?您能否提供有关您所寻找内容的更多详细信息?
     

    @汤姆,
    感谢您关注此评论部分,并回答您自己的问题。

     

    @Parag,
    毫米..我不知道为什么Ctrl-R没有’为你工作。是否在系统上以某种方式禁用了Ctrl- [character]组合。反正我’很高兴您发现Alt-P有所帮助。
     

    @Thiru,
    您要寻找什么日志?您能否详细说明您到底要达到什么目标?
     

    @Srinivas,
    是的一旦开始使用HISTTIMEFORMAT和HISTIGNORE,您会想知道如何’在不使用此功能的情况下,使用Linux命令行已有很长时间。

  • 苏拉卜 2009年6月23日,上午12:37

    我可能需要第n个cmd的参数,而不是先前的命令…
    我怎么才能得到它 ?

  • 雅库姆 2009年6月24日,下午1:57

    从持续不断的积极反馈中可以看出
    -y牛

  • 拉梅什·纳塔拉詹(Ramesh Natarajan) 2009年6月24日,下午7:08

    @Sourabh,

      3  ls /etc/sysctl.conf 
      4  导出HISTTIMEFORMAT ='%F %T';
      5  uname -a
    

     
    让我们在上面的示例中说,您想要采用历史命令#3的参数(即ls /etc/sysctl.conf)并使用它。您可以如下所示进行操作。

    $ cat !3:$
    [Note: This is equivalent to "cat /etc/sysctl.conf" ]
    

     
    @yakupm,
    谢谢你的评论。一世’我很高兴您发现本文很有帮助。

  • agn 2009年7月6日,上午6:34

    You can also use $_ to get the 持续 arg of the previous command.

    $ ls / etc / passwd
    $猫$ _

    也,‘cd -‘带您到以前的位置。

    $ pwd
    / etc / apache2 / sites-enabled
    $ CD/ var / log / apache2
    $ pwd
    / var / log / apache2
    $ CD–
    $ pwd
    / etc / apache2 / sites-enabled

  • 拉梅什·纳塔拉詹(Ramesh Natarajan) 2009年7月8日,晚上10:20

    @Agn,

    谢谢 for explaining the meaning of $_ . It is definitely very helpful, when there are several arguments in the previous command and we want 上ly the 持续 上e.

    关于“cd -“,这绝对是一个很棒的CD hacks,’我刚才提到我 6个很棒的cd命令技巧 文章。

  • Other way to get the 持续 arg of the previous commmand is:

    退出-_

    ls / etc / passwd
    猫[ESC-_]-> cat /etc/passwd

  • 基思·赫恩(Keith Hearn) 2009年10月27日,下午4:42

    这是个很棒的资源。

    另一个有用的是!*,它为您提供了上一个命令的所有参数:
    $ ls 富 酒吧 bing
    富 酒吧 bing
    $ 回声!*
    回声foo 酒吧 bing
    富 酒吧 bing

    您还可以使用!:N获得第N个参数。
    $ ls 富 酒吧 bing
    富 酒吧 bing
    $ 回声!:2
    回声bar
    酒吧

    您可以将其与匹配以特定字符串开头的最新行相结合:
    $ 回声!ls:1
    回声foo

    $ 回声!ls:*
    回声foo 酒吧 bing
    富 酒吧 bing

    $ 回声!ls:0
    回声ls
    ls

    Ok, the 持续 上e seems kinda silly, but it could be useful if you have several commands that start with the same string and you want to know which 上e you did most recently.

    $ 富create
    $ 富start
    $ 富stop
    $ 富start

    $ 回声!foo:0
    回声foostart
    富start

    基思

  • 南大 2010年3月15日,上午12:37

    你好

    We have 上e server and everybody using that server logs in using 根 and we do not normally logged out. I am just wondering if I can record all the commands type from all terminal including ssh terminals.
    有什么办法吗?

  • 杜朱巴 2010年5月5日,上午2:18

    一个非常有用的文章和评论。如果有人感兴趣,则对HISTIGNORE通配符*有效。喜欢
    HISTIGNORE =”ls:ls *:”
    将忽略ls,ls -ltr,ls -a等,但不会忽略lsattr或其他以.s开头的命令‘ls’(如果您输入ls *,显然是这种情况)

  • 亚当 2010年5月23日,晚上10:24

    你好!
    谢谢,

    我必须用“history -w” after “history -c”清除所有以前的历史记录。
    但为什么 ?

  • 你好 2010年7月12日,晚上10:21

    很高兴您的文件对我发展我的知识非常有效

    非常感谢你,我能为你做些什么

  • 史蒂芬·保罗 2010年9月14日,上午3:56

    精彩的文章。十分感谢。

  • 沙美 2010年9月22日,上午2:40

    好文章!!!! --

    我只是试图阻止” 历史-c”命令。但是历史命令受到重击。有什么办法可以防止用户删除那里的历史记录。 ?
    用户不应允许删除历史记录… 🙁

  • 斯坦利 2010年11月18日,下午12:39

    朋友们
    通过键入几个字母,它们是否可以完成最近的命令?
    并按ALT + P,可以显示命令的历史记录?
    谢谢

  • 玛哈 2010年11月23日,下午1:40

    到目前为止,有关历史的最佳说明…快速清晰地了解-
    谢谢!

  • 保罗·马克和平 2011年2月2日,上午10:08

    You can use !$ for the 持续 arg of the 持续 command (little shorter than !!:$) I used to use this so much back in the day before up &向下箭头在所有终端上正常工作’连接到我的肌肉记忆中。 V有用!

  • 夹具 2011年3月2日,下午12:46

    确实“history -c”命令不留痕迹?会话或交易也被删除了吗“history -c” command?

  • 桑索什 2011年3月18日,上午4:53

  • Vishwajeet Kumar 2011年4月21日,上午8:24

    教程很棒

  • 亚历克斯 2011年6月7日,上午1:36

    感谢您宝贵的提示!

    我还有一个问题,如何使历史记录显示时间戳(您已经做过),用户ID,IP地址和命令?

  • 安迪·李·鲁滨逊 2011年6月29日,上午3:57

    一些不错的技巧
    “cd -” is 上e command I’我一直在寻找,因为4dos使用相同的方法“cdd”

    我真正真正想念的是Ctrl-R的前进版本
    当搜索命令时,我经常超调并且可以’t go back.
    (histsize = 1000000-
    The man page says it is Ctrl-S, but this clashes 上 the 命令行 and suspends output until Ctrl-Q is pressed.

    我的解决方案是将此行添加到主目录中的〜/ .inputrc中:
    Control-t:正向搜索历史

    (Ctrl-T转置两个字符,不如向前搜索有用,因此可以将其转储…)

    瞧!

  • 安迪·李·鲁滨逊 2011年7月8日,上午11:44

    实际上,添加
    Control-t:正向搜索历史
    到/ etc / inputrc
    或将/ etc / inputrc复制到您的主目录并进行修改。

    我描述的方法停止了HOME和END键的工作,因为用户’s〜/ .input.rc似乎会替换而不是附加到/etc/input.rc中的服务器默认值!

  • Shivaprakash 2011年9月7日,上午7:48

    不错的教程

  • 麦克风 2011年9月29日,上午9:32

    至于您要通知您使用备用历史记录文件的请求,我有一个:

    我们跟踪各种用户’命令来确定产生错误的服务器/结果/等的命令是什么。用户并不总是提供诚实的答案。因此,我将历史记录文件隐藏在文件系统的另一部分中,并按用户对其进行分类。

    但是,我确实有一个问题无法解决。

    当我将HISTTIMEFORMAT设置为显示日期和时间(%F%T)并将HISTFILE设置为我的自定义位置时,时间格式*始终*是UNIX时间戳,而从不采用用户可读的格式。

    有人对此有解决方案吗?

  • VJ 2011年10月5日,上午7:31

    非常感谢,对找到我想要的东西很有帮助。

  • 阿伦·萨哈(Arun Saha) 2011年10月16日,下午6:57

    确实非常有帮助!

    我们看到了HISTCONTROL的三种用途

    导出HISTCONTROL = ignoredups
    导出HISTCONTROL =已擦除
    导出HISTCONTROL =忽略空间

    它们相互排斥吗?如果有人要两者都怎么办“ignoredups” and “ignorespace”?

  • 扬·格特恩(Jan Goeteyn) 2011年10月18日,上午8:04

    请注意,F8行为(=仅循环历史记录中以您到目前为止输入的字符开头的那部分),并且从Windows cmd.exe shell可以知道,它具有Linux等效功能,通过再次按Ctrl r来查找下一个上一个该单词或字母的实例。随后按退格键在相反方向循环,直到您在最新的情况下仍与该单词或字母匹配。

    这也解决了安迪·李·罗宾逊(Andy Lee Robinson)的问题,后者由于反复输入Ctrl r命令的热情而经常出现超调,并且无法返回:使用退格键返回。

  • 塞布 2011年10月22日,上午6:20

    @阿伦:

    导出HISTCONTROL = ignorespace:erasedups

    顺便说一句,对我来说,在Ubuntu 10.10上
    出口HISTIGNORE =”ls:ls -ltr”

    ls -ltr仍然出现在历史记录中,我需要设置“ls *”

  • 阿卜杜拉·纳瓦什 2011年12月28日,上午2:58

    非常感谢您的启发。
    使用历史记录-d(从历史记录中删除特定行)

  • 阿比吉特 2012年1月3日,下午1:35

    很棒的工作Ramesh!感谢您的努力。

  • BUKUMI OLUYEDI 2012年1月5日,下午3:22

    请在LINUX COMMANDS上提供更多信息。我是尼日利亚的计算机工程专业的本科生。

  • acebee 2012年1月24日,上午2:18

    优秀–让我想起在古老的as400上某个楼层上在班加罗尔度过的遥远时光。

  • 乌玛 2012年3月2日,下午1:21

    对于将HISTFILE重定向到所需位置,我很有用。我的用户目录上有配额限制,最近我的.bash_history被删除了,因为我已经接近限制了!我希望将历史记录文件重定向到其他位置,以防止出现这种情况!

  • 马达夫 2012年3月17日,下午11:01

    这是一个好,伟大,更清晰

  • 斯里拉姆 2012年3月24日,上午1:47

    Thanx非常有用,

    问候,
    斯里兰卡

  • 迪帕克 2012年4月13日,上午7:21

    感谢这本书,它通过这些快捷方式提高了我的工作速度,我什至向其他同伴推荐了它。请即使在网络上也出版此类书籍会有所帮助

  • 拉纳卡雷迪 2012年4月24日,上午1:28

    你好
    我一直在使用CentOS Linux版本6.0,但无法获取所有用户的历史记录。

    当我运行历史记录命令时,我只会获得当前用户’的历史记录(HISTSIZE = 1000)

    I want to get all the 历史 of each and every user in my server, if i run #history (may be other) as 根 user.

    请帮我…

  • 乌玛 2012年5月21日,上午9:13

    我有兴趣每天使用cronjob保存我的历史记录文件,但到目前为止还没有成功!您对此有什么建议吗?

    乌玛

  • 基肖尔 2012年6月15日,上午7:45

    如何查看文件的历史记录

    即)文件的所有修改是什么

    说是否是/ etc / passwd– 持续 5 modifications

  • 保罗·金 2012年8月6日,上午7:22

    我认为,使用HISTFILE功能的原因是由于大型网络中的所有用户都已对历史文件名进行了标准化。用户还可以更改名称,以保留会话,在会话中他知道命令将是唯一的,以便稍后将其更改。

  • 兰迪S. 2012年8月11日,下午5:21

    我想花点时间以更实用的方式了解命令历史。这看起来是个值得努力的好帖子。
    伙计,曾经有!
    PER 拉梅什·纳塔拉詹(Ramesh Natarajan) ..
    “you’我会发现使用命令行更加有趣。”
    绝对真实。谢谢纳塔拉然先生。

  • 劳勃 2012年9月14日,下午5:13

    我设置HISTFILE = / dev / null。并发炮弹’共享他们的历史(曾经让我发呆),而当壳死了时,历史就被忘记了。

  • 保罗 2012年9月18日,晚上8:10

    非常便利— 谢谢!

  • 匿名 2012年10月18日,上午8:26

    当多个sysadmin su到同一用户时,例如‘root’ or ‘oracle’分离出每个用户的历史记录将很有帮助。通过在配置文件中添加以下内容,可以轻松完成此操作。这在HP-UX上特别有用。

    export 历史文件 = $ {HISTFILE:?}。$(日志名)

  • 尤里尔 2012年10月28日,上午3:26

    我同时打开了几个(大约5个)bash会话。当我想重新执行某个命令时,历史记录将无济于事,因为它仅存储来自* current *外壳程序的命令,而我不’记得我从哪个shell运行命令。我该如何克服呢?

  • 约翰·R 2012年11月11日,上午9:46

    乌玛

    您可以在bash设置中使用HISTFILE来包含会话的日期–这样,每天都会创建一个新的历史记录文件。

    自动备份。多田

  • 麦克风 2012年11月14日,下午2:22

    这里’我放在/etc/profile.d中的脚本,该脚本在登录时生效:

    如果[$ UID -eq 0];然后
    shopt -s 你好stappend
    mkdir -p /。历史记录
    导出HISTTIMEFORMAT =”%F %T ”
    历史文件 = /。histories /。”$(who am i | awk ‘{print $1}’)_`日期+%Y%m`_历史”
    触摸/.histories/。”$(who am i | awk ‘{print $1}’)_`日期+%Y%m`_历史”
    chattr + a /.histories/。”$(who am i | awk ‘{print $1}’)_`日期+%Y%m`_历史”
    HISTIGNORE =””
    历史控制 =””
    历史记录 = 1000
    只读HISTFILE
    只读HISTIGNORE
    只读HISTCONTROL
    只读HISTSIZE
    只读HISTFILESIZE
    只读PASSWORD_COMMAND =”history -a”
    导出HISTFILE HISTIGNORE 历史控制 历史记录 历史文件SIZE
    回声“——–新会话“日期+%Y%m%d”——–” >> $HISTFILE
    科幻

    它将根据谁来整理历史文件’d扎根。普通用户历史记录文件通常位于/ home中。这使我们能够检测谁可以以root用户身份执行命令,因为我们在多个系统上有多个具有root用户访问权限的人员。

    显然,我尚未公开该脚本的存在,因此用户将不知道搜索这些隐藏的历史记录文件。

  • 安东尼 2012年12月14日,上午5:31

    嗨!我必须从历史命令中获取更多信息,所以远程主机和pts是可能的?

  • 命令行战士 2012年12月15日,晚上10:11

    我已经使用NFS在多个服务器上共享了/ home’我们发现调整您的.bashrc和其他.dot.files以反映服务器主机名等非常有用。

    历史文件 =〜/ .. 重击_history- $ HOSTNAME
    或类似的东西,
    历史文件 =〜/ .. 重击_history- $ HOSTNAME- $ USER

  • 你好 2013年3月18日,上午6:35

    您作为共鸣重命名历史文件….
    我喜欢怎么做,将文件保存在单独的日志文件夹中,每天以当前日期作为文件名开始新日志…。任何可能的想法吗?

  • 亚历克斯 2013年4月3日,晚上10:39

    中心点– i’m happy. 谢谢!

  • 吉姆 2013年4月4日,下午1:50

    $已经列举了$ 历史文件的出色用法。这里’另一个:挫败脚本小子,可能损害了您的主机’的系统或您的媒体。将历史记录保存在某个特殊的位置会减慢尝试通过$ HOME / .bash_history获取信息的任何人的速度。

    (当然,这不是一个完美的解决方案;脚本可以从$ HOME中相应的点文件中收集$ 历史文件— though it’也可以将其放在另一个特有位置的export.rc文件中。)

  • 斯林瓦苏 2013年4月11日,晚上11:27

    很好

  • 马蒂特工 2013年6月19日,上午2:31

    编写命令时,请在其后加上注释。
    该评论将包含在历史记录中,以后您可以grep获得该评论。

  • 埃里亚斯·坎托斯(Elias Cantos) 2013年7月18日,上午8:31

    很棒的文章。写得好。很好的例子。简洁。

  • 杰西 2013年8月7日,上午8:01

    谢谢你的文章,我’我只读了技巧7,但我’一定要阅读其余部分’没那么晚,我不知道’不必早上工作-

    重新更改历史记录文件的名称:
    I’最近,我改进了我用于各种事物的密码,从诸如2BEis4me这样的字符助记符开始!变成50个字符的短语。但是,我’d一直在使用bash shell键入它们,以便在复制和粘贴到我的浏览器之前可以看到它们是否正确。然后我意识到他们被保存在bash历史中!!

    I’已将它们从历史记录中删除,但更改历史记录文件的文件名/位置似乎会使恶意脚本更难以访问。它不会’不要停止知道自己在做什么的人,因为他们可以务实地阅读,但是… I don’不知道,如果有人设法将代码注入能够读取文件的东西中,例如面板应用程序似乎在做合法的事情,那么历史记录被称为不同的东西会使它的兼容性降低。那’改变我能想到的位置的唯一原因,但是我真正喜欢Linux的一件事是,而不是硬编码,没有人能想到改变它们的原因。’重新开放,这样一来,只要有人想(或在有用的情况下发现自己),没有人想到改变的理由,就可以在需要时进行改变。

    哇,要说的时间比我想的要长得多。

    祝一切顺利,再次感谢您的提示。
    🙂
    杰西

  • [email protected] 2013年8月29日,下午12:01

    我爱你。感谢您的历史记录。

  • 哈里斯·普夫拉 2013年10月11日,上午3:58

    你摇滚!避风港’找到了比这更好的教程!万分感谢

  • w 2013年11月11日,下午7:49

    绝对是这里最有用的提示

  • Masoud kh 2014年2月22日,上午8:00

    很好的例子…。谢谢Ramesh Natarajan

  • 苏达卡 2014年6月3日,上午1:13

    如何在Linux和Windows之间共享公用分区。

  • 戴维·昂加罗(David Ongaro) 2014年6月8日,下午7:15

    安迪·李·鲁滨逊 @:实际上Ctrl-t很有用,因为两个字符的换位是最常见的键入错误之一。您应该习惯使用它!

    使用

    停止姿势^

    为终端禁用Ctrl-s的控制流映射,然后向前搜索可以使用标准键。

  • 未知 2014年7月2日,上午6:37

    要跟踪所有用户执行的命令,我’m使用.bach_logout通过邮件发送对历史记录执行的所有命令。要获取按用户和会话分隔的每个历史文件,我’m using this:
    历史文件 =〜/ .shHistory _ $ {DATEX} _ $(回显$(tty)| cut -d“/” -f4)

    为了清楚起见,历史记录日期格式如下更改:
    历史记录格式 =”%Y-%m-%d %T ”

    问题是发送的时间格式仍在Unix时间戳中。通过使用历史命令,它’s OK.
    $历史
    1 2014-07-02 15:31:50 Login cmd开始日期2014-07-02 15:31:50
    2 2014-07-02 15:31:53 回声$HISTLOG
    3 2014-07-02 15:31:59 vim .bash_profile

    有谁有办法解决这个问题?
    谢谢

  • 吉杰 2014年7月20日,上午10:27

    要保留会话的永久历史记录,请在/ dev / shm /中设置历史记录文件,该文件实际上是RAM空间。历史记录将在会话期间可用,但在重新启动后将消失。

  • 帕特里克 2014年9月1日,上午5:02

    迄今为止,启用历史记录使用的最佳方法是使用增量“prefix”通过.inputrc文件进行的搜索。

    这样,您可以通过按上下箭头来搜索当前文本:

    $ 富

    按一次箭头键
    富xxx
    再次按箭头键
    富 yyy

    等等..

    注意:如果要搜索的文本不在行首,则仍然需要Ctrl + R。

    在〜/ .inputrc中配置了使用Up和Down进行增量搜索,请添加以下行:

    ###对于Sane增量历史记录搜索,只需键入以下内容的前几个字母
    ###命令和向上/向下箭头搜索历史记录的子集
    “\e[A”:向后搜索历史
    “\e[B”:历史搜索
    ## Ctrl + P和Ctrl + N仍然可以使用旧的行为
    ##如果这样会导致左右无法正常工作,请按以下步骤修复它们:
    #”\e[C”: forward-char
    #”\e[D”: backward-char

    #fix ctrl +箭头在ubuntu中跳跃
    #existing〜/ .inputrc文件:
    “\e[1;5C”: forward-word
    “\e[1;5D”: backward-word
    “\e[5C”: forward-word
    “\e[5D”: backward-word
    “\e\e[C”: forward-word
    “\e\e[D”: backward-word

  • 德罗·布迪 2014年10月12日,上午5:34

    OMFG,我从不了解Ctrl + R,它是如此强大!真棒指南,兄弟….

  • 蜜糖 2015年3月6日,上午9:05

    有没有简单的命令可以直接检查前一天的历史记录并删除它的空间?

  • 埃德加·格雷戈里(Edgar Gregori) 2015年3月14日,下午12:01

    第四名

  • 理查德·布莱克 2015年5月6日,下午6:40

    “history -r”当您不小心在提示符下键入密码时。它会“revert”历史记录可以追溯到您开始该会话时:
    “-r读取历史记录文件的内容,并将它们附加到当前历史记录列表中。”

  • 克劳迪奥 2015年5月8日,上午2:26

    你好,我很好奇这是否可能…

    在我的系统上,我像这样在.bashrc文件中设置HOSTFILE变量

    历史文件 = $ HOME / 你好st /`uname -n`.date +%y%m%d`。$$

    这样做的好处是“$HOME/hist/”通过用户会话对所有历史文件进行目录。因此,如果一个帐户在多个用户之间共享,则他们可以保持其历史记录会话分开存储。
    这种方法的最大缺点是,我不能对以前的会话使用history命令(或历史反向搜索Ctrl + R),因为基本上HISFILE在每个新会话中总是不同且唯一的。

    我想知道是否有可能对bash说要对包含在目录中的多个不同文本历史记录文件而不是单个文件运行历史记录命令。某种HISTDIR变量?
    是否存在?可能是bash新发行功能的要求吗?

    谢谢,
    克劳迪奥

  • 匿名 2015年7月20日,晚上9:08

    你好
    不错的文章。但是,除非我错过了您的文字内容,否则本教程仅适用于基于Redhat的发行版吗?对?

  • 托马斯 2015年7月29日,上午7:07

    嗨,用alt +。您挽救了大约2年的生命!谢谢..
    我建议您使用:
    Ctrl + U… delete whole line
    Ctrl + W… delete word
    Ctrl + K…从光标位置删除到结尾

  • 阿米特 2015年12月17日,晚上10:57

    谢谢。

    我想要做,“执行命令而不保留历史记录” . I don’要在运行“历史记录”命令时显示在终端中。

  • 猫女 2016年2月4日,上午2:30

    14.使用HISTSIZE禁用历史记录的使用
    #export 历史记录 = 0
    #历史
    #[请注意,历史记录未显示任何内容]

  • 猫女 2016年2月4日,上午2:32

    嗨阿米特

    It’已经在第14个位置了。

    14.使用HISTSIZE禁用历史记录的使用
    #export 历史记录 = 0
    #历史
    #[请注意,历史记录未显示任何内容]

  • 泰米尔 2016年6月8日,上午12:30

    i want to know where 确实the 历史 or logs of user modification / group modification????

  • 大卫 2016年12月8日,上午3:37

    对于第7点:想要使用它来标识我在哪个服务器上使用此命令(具有100个服务器的通用历史记录非常混乱,最后几乎没有用)。

    之后的问题是:如何从文件检查历史记录。我不’找不到类似history -f的参数。动态设置HISTFILE并不容易,并且会将所有搜索内容写入错误的文件,然后-

    我尝试寻找要放入历史记录日志的标签,以获得类似以下内容的行:

    但此时什么也没发现。

  • 莫尼尔 2017年3月9日,上午1:53

    我们有一个通用的Linux测试环境,可以由多个人工作(使用Putty通过ssh连接),我们需要存储从所有终端发出的命令,以便我们可以跟踪每条命令,由IP /用户和从哪个TTY,以便我们可以使用进行验证‘last’ command.

    我已经相应地更改了.bash_profile

    # Will Give me ip of person logged in
    WHOAMI=`who -m | cut -d '(' -f 2| cut -d ')' -f1`  
    # Will give me tty ID
    MYTTY=`who -m | awk '{print $2;}' | cut -d '/' -f2`
    DATE=`date +"%Y_%m_%d_%H%M%S"`
    DAY=`date +"%Y_%m_%d"`
    shopt -s 你好stappend
    mkdir -p $HOME/HISTORY/${WHOAMI}/${DAY}
    touch $HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}
    导出HISTTIMEFORMAT ='%F %T '
    export 历史文件SIZE=100
    export 历史记录=100
    # stores 历史 科幻le per terminal
    export 历史文件=$HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}
    export PS1='[\[\e[4;32m\]\[email protected]\h\[\e[0m\] \[\e[1;36m\]$PWD\[\e[0m\]]\! $'
    # Updates the 历史文件 at real time i.e. when user presses enter
    export PROMPT_COMMAND="历史-a; 历史-c; 历史记录; ${PROMPT_COMMAND}"
    history -r $HISTFILE
    

    更改.bash_profile之后,history命令停止显示以前的条目。

    当我将PROMPT_COMMAND更改为“history -a; 历史记录; ${PROMPT_COMMAND}”它开始工作,但
    历史文件不会实时更新;它’仅在退出命令被触发时更新。
    如果用户通过右键单击并使用断开连接选项断开腻子会话,则根本不会更新HISTFILE。 --

    附言:-如果我注释导出HISTFILE,它将存储到.bash_history文件中,并且一切运行顺利,并且.bash_history是实时更新的,但是我无法获得触发该命令的tty id或IP

    操作系统:-Red Hat Enterprise Linux Server 6.8版(圣地亚哥)

  • 卡维莎 2017年3月15日,晚上11:39

    总是不错的东西:)

  • Pankaj srivastava 2017年5月1日,晚上11:00

    你好
    您的历史记录命令使用对我非常有用。我想知道我们可以在历史记录中或其他方式存储命令名及其输出吗?如果是,请帮助我。
    Pankaj srivastava

发表评论

版权© 2008–2020 拉梅什·纳塔拉詹(Ramesh Natarajan)。版权所有| 服务条款