【问题标题】:Save evaluated alias command in bash/zsh history在 bash/zsh 历史记录中保存评估的别名命令
【发布时间】:2014-09-22 20:18:23
【问题描述】:

我想知道是否可以将评估的命令存储在历史记录中而不是别名中。尤其是很多用户都有他们的别名,在历史搜索中很难对他们有一个概览。

例子:

$ alias a2re="apache2ctl restart"
$ a2re
$ history
    1  a2re

代替:

$ history
    1 apache2ctl restart

有人知道 bash/zsh 是否有这样的选项吗?

【问题讨论】:

  • 如果这是为了查看用户运行的命令,最好使用系统级工具来执行此操作,而不是使用 bash 历史记录。 sysdig 可以非常有效地记录每个 execv() 调用运行,这意味着您拥有实际调用的每个命令——即使不是直接通过 shell 启动的东西。

标签: bash alias zsh evaluation


【解决方案1】:

我不知道。 bash,至少,在点击 Enter 执行命令之前记录输入缓冲区中的内容(在经历历史扩展之后)。一种解决方法是告诉shell 在您承诺执行它之前扩展行。键入别名后,键入 Meta-Control-e(其中 Meta 是您的 Alt Esc 键,具体取决于您的设置)。这将像 shell 一样扩展该行,但在通过按 Enter 执行它之前将命令留在命令行上以供进一步编辑。然后命令的扩展形式将保存在您的历史记录中。

【讨论】:

  • bash 记录输入缓冲区并不完全正确。与zsh 一样,它会在将命令保存到历史记录之前执行历史扩展。来自 bash 手册页“shell 在参数和变量扩展之前(参见上面的 EXPANSION)但在执行历史扩展之后将每个命令存储在历史列表中”。跨度>
猜你喜欢
  • 1970-01-01
  • 2021-04-12
  • 2015-07-26
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多