暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Linux中怎样使用history命令

TIAP 2021-06-04
517

使用history命令可以使工作更高效。

随着我使用终端的时间越来越多,我一直在寻找一些能让我提高效率的命令。history 是一个可以改变我日常工作的命令。

history 命令保存了从终端会话开始后的所有其他命令的列表,允许你重新使用这些命令,而不是再次输入。如果你是一个经验丰富的终端用户,那么你应该知道 history,但是对于一些新的系统管理员来说,history是一个可以产生即时效益的工具。

首先,history 命令实际上不是一个真正的命令。你可以通过在系统中查找命令来验证这一点:


    $ which history
    which: no history in (/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin)


    你会看到在计算机中找不到 history 命令,因为它是 shell 的一个内置关键字。也正是因为它是写在 shell 中的,所以根据你使用的是 Bash, tcsh, Zsh, dash, fish, ksh 等等,history 会有一些不同。本文是基于Bash来描述的,因此某些函数可能无法在其他 shell 中工作。但大多数的基本功能是相同的。


    history 101


    要查看 history 历史记录,在linux系统中打开终端,然后输入:

      $ history


      你会看到:


        clear
        ls -al
        sudo dnf update -y
        history


        history 命令显示你启动终端会话以来所输入的命令列表。有意思的是,你可以使用以下命令来重新调用列表中的任何一个(历史命令):

          $ !3


          这个 !3 命令是告诉 shell 执行历史记录表中的第三行命令。此外也可以通过输入以下命令来访问该命令:

            $ !sudo dnf


            这个是让 history 搜索与你提供的表达式相匹配的最后一个命令(在上面这个例子中,这个表达式是dnf)并运行它。


            查找 history


            你还可以使用 history 来重新运行上次输入的命令,方法是键入:!!. 通过将它与 grep 配对,可以搜索与文本模式匹配的命令,或者通过将它与 tail 一起使用,可以找到最后执行的几个命令。例如:


              $ history | grep dnf
              3 sudo dnf update -y
              5 history | grep dnf




              $ history | tail -n 3
              4 history
              5 history | grep dnf
              6 history | tail -n 3


              获取此搜索功能的另一种方法是键入 Ctrl-R 以调用对命令历史记录的递归搜索。键入后,提示变为:

                (reverse-i-search)`':


                这样你可以通过点击回车(Enter)或者回退(Return)来选择匹配的命令。


                修改和执行命令


                你还可以通过 history 来修改命令以返回一个新的命令。比如我想要将 history | grep dnf 改为 history | grep ssh, 可以执行以下命令:

                  $ ^dnf^ssh^


                  命令将被执行,但会以ssh来替换dnf,也就是说,会执行以下命令:

                    $ history | grep ssh


                    删除 history


                    有时候你可能会要删除部分或者所有的历史命令。如果要删除部分历史命令,使用 history -d <line number>, 如果要清除所有的历史记录,可以执行 history -c.

                    history列表存储在一个用户可以修改的文件中。Bash用户可以在你的home路径中找到它,文件名是.bash_history.


                    其他


                    你还可以用 history 来做一些其他事情:

                    • 将 history 缓冲区的大小设置为某一数值;

                    • 记录历史记录中每一行的日期和时间;

                    • 阻止某些命令被记录在 history 记录中。


                    有关 history 命令的其他信息或者有意思的用法,可以看一下 Seth Kenlon 关于parsing history,  history 搜索修饰符的文章,或者 GNU Bash 的操作手册。


                    本文作者:Steve Morris,翻译:GLIU

                    原文地址:https://opensource.com/article/18/6/history-command

                    文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论