如何排除某些命令存储在 TCSH 历史记录中?

如何排除某些命令存储在 TCSH 历史记录中?

我将命令行历史记录存储在 TCSH 中,但我想防止某些频繁、简单的命令(例如“exit”、“cd”)包含在历史记录中(历史记录仅保存固定数量的命令,因此我只想保留有用的命令)。

有没有办法指定“排除列表” - 一个包含不会添加到当前历史文件中的命令的列表?这样,我可以只保留历史记录中最相关的命令,并过滤掉我不想堵塞历史记录的命令。

答案1

这并不完全是您想要的,但这可能会有所帮助:

  histdup (+)
    Controls handling of duplicate entries in the history list.  If set to `all' only unique his-
    tory  events are entered in the history list.  If set to `prev' and the last history event is
    the same as the current command, then the current command is not entered in the history.   If
    set  to  `erase'  and the same event is found in the history list, that old event gets erased
    and the current one gets inserted.  Note that the `prev' and `all' options  renumber  history
    events so there are no gaps.

因此,您在 .tcshrc 中放入“set histdup = all”,虽然您仍然会在历史记录中获得琐碎的命令,但您只会获得每个命令的一个实例,这至少减少了混乱。

答案2

如果你的意思是 bash 中的变量,HISTCONTROLand HISTIGNORE, where

HISTCONTROL=ignorespace不会将任何前面带有空格的命令加载到您的历史记录中

HISTIGNORE=ls:cd:exit阻止所有列出的命令添加到您的历史记录中,那么不行 - 该功能本身并不在 tcsh 中。

答案3

对此有一个奇特的答案,这可能涉及在退出每个终端之前以编程方式过滤历史记录。但不要这样做,而是增加历史记录的大小。在 shell 启动脚本中,写入“set History=XXX”和“set savehist=YYY”,其中 YYY <= XXX。 “历史记录”是在会话中保存的命令数,在所有会话中保存命令(关闭终端时保存)。看http://unixhelp.ed.ac.uk/shell/tcsh_hist1.htmlhttp://unixhelp.ed.ac.uk/shell/tcsh_hist2.html

如果您想编辑整个机器的默认值,您可以尝试查找 tsch.defaults,例如 /usr/share/init/tcsh/tcsh.defaults。它看起来像这样:

# History
set history = XXX
set savehist = YYY
set histfile = ~/.tcsh_history # History file

相关内容