让你的 Bash 使用更加高效

544 阅读2分钟
  1. 删除无意义命令

    export HISTIGNORE='pwd:exit:fg:bg:top:clear:history:ls:uptime:df'
    

    使用该选项后,在历史记录中就不会记录选项后包含的命令。

  2. 忽略敏感命令

    export HISTCONTROL=ignorespace
    

    例如:你不想在历史记录中出现带有密码的命令,可以在输入密码的命令前添加空格,这样就不会保存在历史记录中。

  3. 删除重复命令

    HISTCONTROL=ignoredups
    

    使用改选项后,历史记录中不会记录连续重复执行的命令,例如:连续输入了 3 次 ls,只会记录一次。

    如果你想更为激进,那么可以使用以下选项,删除整个历史记录里面的重复项。

    HISTCONTROL=erasedups
    
  4. 不丢失重要命令

    Bash 的 history 文件默认是覆盖,如果并发打开了多个 Shell 会话,只会记录最后一个退出的 Shell 的命令历史(历史命令保存在内存中,且在退出时写入历史文件)。

    使用以下选项,将历史记录修改为追加模式。

    shopt -s histappend
    

    与此同时,在共享 Shell 的情况下,可能会由于历史文件太小而丢失重要的记录,因此,可以把历史记录的上限调大,避免丢失有用的命令。

    HISTSIZE=10000
    HISTFILESIZE=10000
    

    HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数. HISTSIZE 定义了 history 命令输出的记录数

  5. 记录命令执行时间

    export HISTTIMEFORMAT="%F %T " 
    

    HISTTIMEFORMAT 的格式是 strftime 函数的格式:%F : Y-M-D ,%T: H-M-S,需要在后面再加个空格,不然时间会和命令连到一起。

  6. 修改历史记录文件名称

    默认情况下,历史记录都保存在 ~/.bash_history 文件中。

    export HISTFILE=/var/history/$USER-$UID.log
    

    使用HISTFILE将历史记录保存到指定的文件中。

  7. 实时追加历史命令

    PROMPT_COMMAND="history -a"
    

    PROMPT_COMMAND 添加的是每个命令后执行的命令,添加上 history -a 命令,可以直接将当前缓冲区的命令写入到文件中。

    # history 命令一些常用选项:
    -N: 显示历史记录中最近的N个记录;
    -c:清空当前历史命令;
    -a:将历史命令缓冲区中命令写入历史命令文件中;
    -r:将历史命令文件中的命令读入当前历史命令缓冲区;
    -w:将当前历史命令缓冲区命令写入历史命令文件中;
    -d<offset>:删除历史记录中第offset个命令
    -n<filename>:读取指定文件