是否有一些实用程序或插件在bash历史记录中包含当前目录?

vfclists

对于bash历史记录而言,显示执行命令的工作目录将非常有用。历史记录可以很好地了解您所做的事情,但是很难告诉您您在哪里做。

是否有任何这样的插件或实用程序,或者可以配置bash来添加它?

斯普雷蒂奇先生

您可以使用该PROMPT_COMMAND功能,将其添加到.profile/中.bashrc

myprompt() {  
  [[ "$PWD" != "$PREVPWD" ]] && history -s "# cd \"$PWD\""
  PREVPWD="$PWD" 
}  
PROMPT_COMMAND=myprompt

cd每次当前目录更改时,这会将一个(注释掉)命令填充到您的历史记录中。它存储$PWD,因此类似的cd ..内容仍会记录完整路径。这出现在您的正常历史记录中,因此并不是最方便的方法,它会打破速记,例如!$...

这是更好的版本(即过度设计的版本),它检查先前的命令是否将目录更改为绝对目录以防止污染历史记录:

myprompt() {
  local _seq _date _time _cmd _args
  [[ -z "$HISTTIMEFORMAT" ]] && { 
    ## reads history with no HISTTIMEFORMAT set
    read _seq _cmd _args < <(history 1)
  } || {
    ## this reads history with a HISTTIMEFORMAT='%Y%m%d %H:%M:%S '
    read _seq _date _time _cmd _args < <(history 1)
  }
  ## escaping =~ is troublesome, use variables instead
  local _re1='(cd|pushd|popd)'
  local _re2='^"?/'
  ## check for change-of-directory with absolute path
  [[ "$_cmd" =~ $_re1 && "$_args" =~ $_re2 ]] && {
    PREVPWD="$PWD"
    return
  }
  [[ "$PWD" != "$PREVPWD" ]] && {
     history -s "# cd \"$PWD\""    # stuff into history
     PREVPWD="$PWD"
  }
} 
PROMPT_COMMAND=myprompt

如果您有一个自定义,可能需要进行一些细微的调整HISTTIMEFORMAT

你可以调整history -s操作,而不是删除并重新插入/修改cdpushdpopd命令,例如

  [[ "$_cmd" =~ $_re1 ]] && {
    history -d $_seq  # remove original user command
    history -s "$_cmd $_args # $_cmd \"$PWD\"" # add annotated version
  }

(一个诱人的选择是HISTTIMEFORMATPROMPT_COMMAND函数中动态更改,但这不会添加到历史记录文件中,仅在显示历史记录时才应用,因此无法按预期工作。)

Bash将历史时间戳记保存为#nnnn每个命令条目上方(epoch-seconds)行。原则上,$PWD可以在时间戳记之后将其添加到该行,而不会破坏任何内容,但是将需要一些不平凡的代码更改才能正确地支持此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash是否有目录历史记录?

来自分类Dev

从存储在bash历史记录中排除一些命令

来自分类Dev

当前会话的bash历史记录

来自分类Dev

是否可能具有目录感知的bash历史记录

来自分类Dev

是否可以搜索所有bash历史记录

来自分类Dev

如何返回一些提交,但仍将提交历史记录保留在git中?

来自分类Dev

如何返回一些提交,但仍将提交历史记录保留在git中?

来自分类Dev

Android浏览历史记录仅保留一些网站

来自分类Dev

脚本中的Bash历史记录:`!#:*`

来自分类Dev

如何确定客户历史记录的第一条记录中的单元格是否包含值?

来自分类Dev

UNIX的历史记录不包括$ PATH中的当前目录

来自分类Dev

如何使实用程序类或功能组件暴露一些常用的实用程序方法

来自分类Dev

如何使用bash历史记录使用历史记录中的参数运行命令?

来自分类Dev

git / github:从历史记录中删除(但不是从HEAD中删除)一些大的二进制文件

来自分类Dev

在bash历史记录中执行一系列命令的快捷方式是否存在?

来自分类Dev

Linux实用程序可向从STDIN获取输入的任何可执行文件添加命令行历史记录缓冲区?

来自分类Dev

创建一个包含bash历史记录扩展的别名

来自分类Dev

在bash中为每个工作目录创建历史记录日志

来自分类Dev

重新启动后Bash历史记录不包含所有历史记录和空白,如何解决?

来自分类Dev

重新启动后Bash历史记录不包含所有历史记录和空白,如何解决?

来自分类Dev

zsh中的按目录历史记录

来自分类Dev

无法从Git历史记录中删除目录

来自分类Dev

Vimperator:如何在当前选项卡中列出历史记录,然后选择其中一个历史记录返回?

来自分类Dev

clisp解释器是否可能具有类似bash的命令历史记录?

来自分类Dev

是否有非bash / terminal命令的命令历史记录文件?

来自分类Dev

“ sudo halt”是否使bash有机会撰写其历史记录?

来自分类Dev

如何在git中查找历史记录中包含提交的所有引用

来自分类Dev

Chrome扩展程序历史记录API是否未显示所有结果?

来自分类Dev

N ++是否有一些包含模板插件?

Related 相关文章

  1. 1

    bash是否有目录历史记录?

  2. 2

    从存储在bash历史记录中排除一些命令

  3. 3

    当前会话的bash历史记录

  4. 4

    是否可能具有目录感知的bash历史记录

  5. 5

    是否可以搜索所有bash历史记录

  6. 6

    如何返回一些提交,但仍将提交历史记录保留在git中?

  7. 7

    如何返回一些提交,但仍将提交历史记录保留在git中?

  8. 8

    Android浏览历史记录仅保留一些网站

  9. 9

    脚本中的Bash历史记录:`!#:*`

  10. 10

    如何确定客户历史记录的第一条记录中的单元格是否包含值?

  11. 11

    UNIX的历史记录不包括$ PATH中的当前目录

  12. 12

    如何使实用程序类或功能组件暴露一些常用的实用程序方法

  13. 13

    如何使用bash历史记录使用历史记录中的参数运行命令?

  14. 14

    git / github:从历史记录中删除(但不是从HEAD中删除)一些大的二进制文件

  15. 15

    在bash历史记录中执行一系列命令的快捷方式是否存在?

  16. 16

    Linux实用程序可向从STDIN获取输入的任何可执行文件添加命令行历史记录缓冲区?

  17. 17

    创建一个包含bash历史记录扩展的别名

  18. 18

    在bash中为每个工作目录创建历史记录日志

  19. 19

    重新启动后Bash历史记录不包含所有历史记录和空白,如何解决?

  20. 20

    重新启动后Bash历史记录不包含所有历史记录和空白,如何解决?

  21. 21

    zsh中的按目录历史记录

  22. 22

    无法从Git历史记录中删除目录

  23. 23

    Vimperator:如何在当前选项卡中列出历史记录,然后选择其中一个历史记录返回?

  24. 24

    clisp解释器是否可能具有类似bash的命令历史记录?

  25. 25

    是否有非bash / terminal命令的命令历史记录文件?

  26. 26

    “ sudo halt”是否使bash有机会撰写其历史记录?

  27. 27

    如何在git中查找历史记录中包含提交的所有引用

  28. 28

    Chrome扩展程序历史记录API是否未显示所有结果?

  29. 29

    N ++是否有一些包含模板插件?

热门标签

归档