我对存储在中的终端或命令行历史记录有几个疑问~/.bash_history
。
我可以使用命令在终端中看到该文件
history
,但如果我尝试使用命令打开它,则gedit bash_history
文件完全是空的。为什么?我找到了如何使用以下代码行从终端删除文件中的一定数量的行:
for i in {1..N}; do history -d N; done
其中 N 是您要删除的行数(或命令数),但现在历史文件显示了最后一条命令,如果您试图覆盖您的内容,那么这不是很聪明的做法。所以问题是:我如何给出最后一条代码行并确保它不会被记录下来?
答案1
你只是忘记了前面的点,打开(bash)终端历史文件的命令是
gedit ~/.bash_history
此文件仅当您关闭一个终端。
要删除最后一个10来自此文件的行并且不记录此命令本身,打开一个新终端并执行以下命令链:
sed -n -e :a -e '1,10!{P;N;D;};N;ba' ~/.bash_history && history -c && exit
或者
for i in {1..10}; do sed -i '$d' ~/.bash_history; done && history -c && exit
或者
head -n -10 ~/.bash_history > ~/.b_h_2 && mv ~/.b_h_2 ~/.bash_history && history -c && exit
sed
或head
分别从中删除选定的行~/.bash_history
、history -c
清除终端的历史记录并将exit
其关闭。
答案2
bash_history 文件是一个隐藏文件,以点开头。你需要执行
gedit ~/.bash_history
这将在 gedit 中打开该文件。
答案3
如果你只想删除命令日志的某些部分那么上述方法就很好了。如果你想停止特定 bash 会话的命令记录,那么发出命令
unset HISTFILE
更激烈的是,如果你不希望你的任何命令被记录,然后你可以做
rm ~/.bash_history
ln -s /dev/null ~/.bash_history
请注意,第一种方法仅对单个会话有效,而第二种方法将停止所有未来会话的命令记录。
答案4
1) 运行sh
;这将生成 ash 的子 shell,它根本不记录历史记录。从那里编辑
2)将该行添加HISTCONTROL=ignoreboth
到.bashrc
,并执行exec bash
以用重新初始化的 shell 永久替换当前 shell,然后执行所有您不想以前导空格记录的命令。