一、概述

    history命令是Linux的一个内嵌的shell命令,history命令的使用有时会大大缩短我们输入命令的时间,达到节省命令快捷操作的要求。学会history命令之后,我们可以隐藏一些含有敏感信息的命令输入,做到使系统更加安全的目的。我们还可以定时的去清理我们不想要其它用户看到的一些私密的命令。

二、命令行历史

    保存你输入的命令历史。可以用它来重复执行命令;

    登录shell时,会读取命令历史文件中记录下的命令,历史文件路径~/.bash_history;

    登录进shell后新执行的命令只会记录在缓存中;这些命令会在用户退出时“追加”至历史文件中;

三、调用历史命令

    重复前一个命令,有四种方法:

        ①使用键盘上的↑方向键,并回车执行;

        ②按!!并回车执行;

        ③输入!-1并回车执行;

        ④按Ctrl+P并回车执行;

    !字符串:重复执行最近一次以字符串开头的命令;eg:!string

    !number:按照history命令输出中的序号重复对应命令(执行第几条命令);eg:!100

    !?字符串:重复前一个包含字符串的命令;eg:!?abc,重复前一个包含abc的命令;

    !-n:重复n个命令之前的那个命令(倒数第几条);eg:!-4:倒数第四条命令;

    使用up(向上)和down(向下)键来上下浏览从前输入的命令;

    键入Ctrl+r来在命令历史中搜索命令:

        (reverse-i-search)`': 

    要重新调用前一个命令中最后一个参数:

        !$;

        Esc,.(点击Esc键后松开,然后点击.键);

        Alt+.(按住Alt键的同时点击.键);

四、调用历史参数

  1:

    command !^:调用上一个命令的第一个参数;

    command !$:调用上一个命令的最后一个参数;

    command !*:调用上一个命令的全部参数;

    command !:n:调用上一个命令的第n个参数;

  2:

    command !n:^:调用第n条命令的第一个参数;

    command !n:$:调用第n条命令的最后一个参数;

    command !n:m:调用第n条命令的第一个参数;

    command !n:*:调用第n条命令的第一个参数;

  3:

    command !string:^:从命令历史中搜索以string开头的命令,并获取它的第一个参数;

    command !string:$从命令历史中搜索以string开头的命令,并获取它的最后一个参数;

    command !string:n命令历史中搜索以string开头的命令,并获取它的第n个参数;

    command !string:*从命令历史中搜索以string开头的命令,并获取它的全部参数;

五、history命令

    history命令:查看或设置命令历史相关参数

    options:

        -c:清空命令历史(清的是内存的命令历史);

                wKiom1l06D3y5HmWAAAjLou5Esw526.png-wh_50

        -d:删除历史中指定的命令;

                wKioL1l06ZOBlgXyAABM756i0FI130.png-wh_50

         #:显示最近的#条历史; 

                wKiom1l06bvSBSJ3AAAtPJa8C8Y860.png-wh_50      

        -a:追加本次会话新执行的命令历史列表至历史文件;

                wKiom1l064rxVLjDAACknauKmIY587.png-wh_50

        -n:读历史文件中未读过的行到历史列表;

            远程终端1:

                wKiom1l07MOxcPJ_AABsxpyCfio024.png-wh_50

            远程终端2:

                wKioL1l07PDxTh3aAABMWTWOnLk551.png-wh_50                   

        -r:读历史文件附加到历史列表;

            远程终端1:

                wKioL1l07qDSw1NDAABt60B4oS4559.png-wh_50

            远程终端2:

                wKiom1l07rCQttozAABaiZBAzSY279.png-wh_50

        -w:保存历史列表到指定的历史文件;

                wKioL1l07vXBhKPyAAB5a3gZDwE165.png-wh_50

        -p:展开历史参数成多个行,但不存在历史列表中;

                wKiom1l07zuSHn0CAAAqd4-5DbI088.png-wh_50

        -s:展开历史参数成一行,附加在历史列表后;

                wKioL1l079WCRBQBAAA44Cw19Vc353.png-wh_50

六、命令历史相关环境变量

     HISTSIZE:命令历史记录的条数(默认1000);

                wKiom1l08DaywbF_AAAvze_aw3s704.png-wh_50

    HISTFILE:指定历史文件,默认为~/.bash_history;

    HISTFILESIZE:命令历史文件记录的历史条数(默认1000);

                wKioL1l08IST0R-IAAAxPteNups001.png-wh_50

    HISTTIMEFORMAT=“%F %T”:显示时间;

                wKiom1l08abjlyo1AABNNWuPaPI820.png-wh_50

    HISTIGNORE=“str1:str2:...”忽略str1,str2历史;

                wKiom1l086_DEz3jAAB4BfDuOWc327.png-wh_50

七、控制历史命令的记录方式

    环境变量:HISTCONTROL

        ignoredups:忽略重复的命令;连续且相同方为“重复”(默认使用ignoredups);

                wKioL1l09CvScZueAAAdVCUc0KE003.png-wh_50

        ignorespace:忽略所有已空白开头的命令;

                wKioL1l09O_TViZWAABX5wHpzj4668.png-wh_50

        ignoreboth: ignoredups,ignorespace

        erasedups:删除重复命令(连续、不连续都删除)

                wKiom1l09VCzg8PnAAAx6LF3mF4249.png-wh_50

    环境变量可以存放在以下配置文件路径中:

        /etc/profile(对所有用户生效);

        ~/.bash_profile(对当前用户生效);


八、bash的快捷键

    Ctrl+l:清屏,相当于clear命令;

    Ctrl+c:取消命令的执行;

    Ctrl+a:移动到命令行最前面;

    Ctrl+e:移动到命令行最后面;

    Ctrl+u:会删除到行首;

    Ctrl+k:会删除到行尾;

    Ctrl+b:向左移动一个字符;

    Ctrl+f:向右移动一个字符

    Esc+b:向左移动一个单词;

    Esc+f向右移动一个单词;

九、删除历史命令(内存和文件中的命令

    执行两条命令:

        rm -f .bash_history;

        history -c;