我将命令行历史记录存储在 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 中的变量,HISTCONTROL
and 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.html和http://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