• Linux命令:history命令历史的管理及用法


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

      我们可以通过# histroy 来查看历史命令。history是bash的内部命令。通过# help history获取帮助。

     

    一、history的常见选项

    # history
    。。。  # 省略前面
      994  man poweroff
      995  poweroff --reboot
      996  man poweroff
      997  man shutdown
      998  shutdown +2 "Goodbye SB"
      999  shutdown -c
     1000  man rm
     1001  info rm
     1002  man history
     1003  enable 
     1004  enable  | grep history
     1005  help history
     1006  history 
     1007  history -d  1000
     1008  history 
     1009  echo $HISTORYSIZE
     1010  history

    # history -c        清空命令历史记录

    # history -d N      N为整数,删除历史中序号是N的命令

    # history N         N为整数,显示最近N条历史

    # history -a        追加本次回话新执行的命令历史列表至~/.bash_history文件

    # history -r        读历史文件附加到历史列表

    # history -w        保存历史列表到指定的历史文件

    # history -n        读历史文件中未读过的行到历史列表

    # history -p        展开历史参数成多行,但不存在历史列表中

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

     

    二、调用命令历史的方法

      1、重复前一个命令,有4种方法

    • 使用方向键↑选中命令,按↑↓调整,并回车执行
    • 输入!! 并回车执行
    • 输入!-1 并回车执行
    • 按Ctrl + p,调出命令,并回车执行

      2、 !:0 执行前一条命令(去除参数)

      3、 Ctrl + n显示当前历史中的下一条!命令,但不执行

      4、 Ctrl + j执行当前命令

      5、 !n 执行history命令输出对应序号为n的命令

      6、 !-n执行history历史中倒数第n个命令

      7、 !string 重复前一个以“string”字符串开头的命令

      8、 !?string 重复前一个包含string字符串的命令

      9、 !string:p   仅打印命令历史,而不执行

    10、 !$:p 打印输出!$(上一条命令的最后一个参数)的内容

    11、 !*:p 打印输出!*(上一条命令的所有参数)的内容

    12、 ^string 删除上一条命令中的第一个string

    13、 ^string1^string2将上一条命令中的第一个string1替换为string2

    14、 !:gs/string1/srting2 将上一条命令中所有的string1都替换为string2

    15、使用方向键↑↓键来上下浏览从前输入的命令

    16、Crtl + r来在命令历史中搜索命令

        进入(reverse-i-search)`':模式

    17、 Crtl + g 从历史搜索模式退出

    18、 重新调用前一个命令中最后一个参数,3种方法

      !$

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

       Alt+. (按住Alt键的同时点击.键),在一些终端软件中屏蔽了Alt功能键,需要开启

    19、command !^      利用上一个命令的第一个参数做cmd的参数

      command !$      利用上一个命令的最后一个参数做cmd的参数

      command !*      利用上一个命令的全部参数做cmd的参数

      command !:n     利用上一个命令的第n个参数做cmd的参数

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

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

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

      command !n:*    调用第n条命令的所有参数

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

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

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

      command !srting:*   从命令历史中搜索string开头的命令,并获取它的所有参数

     

    三、命令历史相关的环境变量

      HISTSIZE:命令历史中可以保存的命令的个数,默认值为1000

      HISTFILE:命令历史保存在哪个文件,默认为当前用户家目录中的.bash_history文件

      HISTFILESIZE:命令历史文件可以保存的命令的个数,默认值为1000

      HISTIGNORE='command1:command2:...',让历史命令不记录执行过的命令,默认为NULL

    举例:HISTIGNORE='ls'  #让历史文件不记录ls命令,但是如果ls命令后接任何参数(包括空格)都会记录起来。所以要完全不记录任何与ls相关的命令,需要赋值为'ls *',即 HISTIGNORE='ls *'

      HISTTIMEFORMAT="%F %T-->"   执行history 命令显示的时候,带有此格式时间。

                                              让~/.bash_history带有相对时间如:#1560378603

      HISTCONTROL=[ignoredups|ignoredups|ignoreboth|erasedups],控制命令历史的生成

        ignoredups:忽略记录重复的命令:连续相同的命令为重复命令(默认的变量值)

        ignorespace:不记录以空白字符开头的命令

        ignoreboth:相当于上面两个参数ignoredups,ignorespace的组合

        erasedups:  删除重复命令

     

    注意:修改环境变量建议在/etc/profile.d/中创建***.sh文件,便于日后的查看和管理

     

  • 相关阅读:
    Elasticsearch入门讲解
    NLP入门(九)词义消岐(WSD)的简介与实现
    NLP入门(八)使用CRF++实现命名实体识别(NER)
    NLP入门(七)中文预处理之繁简体转换及获取拼音
    NLP入门(六) pyltp的介绍与使用 转自:jclian91
    NLP入门(五)用深度学习实现命名实体识别(NER) 转自:jclian91
    NLP入门(四)命名实体识别(NER):jclian91
    NLP(三)词形还原(Lemmatization) 转自jclian91
    NLP(二)探究TF-IDF的原理(转自:jclian91)
    NLP(一)词袋模型及句子相似度(转自:jclian91)
  • 原文地址:https://www.cnblogs.com/ysuwangqiang/p/11336121.html
Copyright © 2020-2023  润新知