#1 楼
这应该是您要查找的内容:unset HISTFILE
来自
man bash
如果未设置HISTFILE,或者如果历史记录文件不可写,则不会保存历史记录。
或者,如果要先将其关闭然后再次打开,则使用
set
可能会更容易:关闭
set +o history
打开
set -o history
#2 楼
使用bash设置HISTCONTROL="ignorespace"
,并在所有不想在历史记录中记录的命令前面加空格。如果您忘记采取任何措施,还可以使用history -d <number>
删除特定条目,或者使用history -c
清除整个命令历史记录。#3 楼
确保HISTCONTROL
包含ignorespace
。您可能需要在HISTCONTROL=ignorespace
中添加HISTCONTROL=ignoredups:ignorespace
(或~/.bashrc
等)。然后,历史记录中会省略所有以空格开头的命令行。另一种可能性是启动一个新的不保存其历史记录的bash会话。
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
#4 楼
如果您需要避免存储多个命令,而仍然想使用向上箭头访问以前的命令,请使用:$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
有四种方法(级别)来控制命令的存储方式。
第一个也是最简单的方法是使用
ignorespace
(或两者都忽略):$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
这将允许您在要避免被记录在
history
的内存列表中的命令之前使用空格。因此,由于在内存中没有记录可发送到文件的命令,因此还将避免将一个命令发送到$HISFILE
中列出的文件。避免记录命令到
$HISTFILE
中的文件:$ unset HISTFILE
如果未设置,则退出shell时不会保存命令历史记录。
将
HISTFILE=''
设置为空和/或将其设置为HISTFILE=/dev/null
的效果相同。了解命令仍在记录到内存列表中,请尝试使用
history
命令或向上箭头。警告:如果在存在外壳程序之前将HISTFILE重置,则无论如何都可以将内存中记录的所有内容写入文件中。
避免将新命令记录到内存中的历史记录列表中。
而且由于不在内存中,因此无法记录到文件中。
$ shopt -ou history # or set +o history
重新启用
shopt -os history
(或set -o history
)将所有命令从中删除到内存中的历史记录列表:
$ HISTSIZE=0
所有命令(从内存中)都将被擦除,因此,什么也不会存储到文件中,当然,直到将变量再次设置为某个有效的数值为止。
评论
//,它在一个方便的页面中涵盖了@Ambrose以外的所有答案。要走的路,@ Isaac。您愿意为此添加一个或两个指向文档的链接吗?可以肯定的是,人类历史不会对我们大多数人造成影响。
– Nathan Basanese
18-10-15在22:46
@NathanBasanese展开。更好?
–艾萨克
18-10-17在15:58
//,是的!我假设这些来自Bash变量和Shopt内置文档是否正确?
– Nathan Basanese
18-10-17在16:52
//,同时,在阅读Bash变量文档时,我遇到了HISTIGNORE,它包含了HISTCONTROL的功能。
– Nathan Basanese
18-10-17在16:55
(假设您使用的是Linux):如果执行命令LESS = +'/ ^ * HISTI'man bash(不是“手册页”吗?),会发生什么。 @NathanBasanese
–艾萨克
18-10-17在21:38
#5 楼
关闭历史记录有一种简单的方法,因此命令不会存储在.bash_history
文件中。必须将空格或制表符空格放在任何命令的前面,这样才能赢得该命令不会存储在历史记录中。例如:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
pwd
命令不会在历史记录中存储,因为它的前面有空格。评论
这行不通; Bash抱怨找不到“-”或“ -history”或其他带连字符的命令。
–塞缪尔·A·法沃二世
15年11月12日在21:52
除非在forcefsck的响应中设置了HISTCONTROL =“ ignorespace”,否则这将无法工作
– DeveloperChris
16-3-21在23:37
#6 楼
export HISTFILE=/dev/null
那是我的后路。万一未设置的HISTORY / HISTFILE / HISTCONTROL等不起作用,将其导出到/ dev / null总是对我有用。
评论
要暂时暂停历史记录吗?作为常规命令,这对我不起作用。后续命令已记录到历史记录。您是用.bash_profile还是脚本来调用它? GNU bash版本3.2.57(1)-发行版(x86_64-apple-darwin16)
– Mat Gessel
19 Mar 3 '19 at 22:26
#7 楼
为了进一步说明SiegeX的答案,并使其真正进入隐身模式...免责声明:标题内容可能会在gnome-terminal上运行。仅在Linux Mint 19.3 / Gnome Terminal 3.28.1上进行了测试,因为我很懒。
将以下内容添加到您的
~/.bash_functions
中(假设您是通过.bashrc
/ .profile
等导入):function setGnomeTerminalTitle() {
local NEW_TITLE="";
PS1="\[\e]0;${NEW_TITLE}\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\] \[3[01;34m\]\w $\[3[00m\]";
}
然后将以下内容添加到您的
~/.bash_aliases
(同样假设您是通过.bashrc
/ .profile
等导入):alias title="setGnomeTerminalTitle";
alias hist='history'
alias histoff="setGnomeTerminalTitle 'Incognito Window' && set +o history"
alias histon="setGnomeTerminalTitle \"$USER@$HOSTNAME:${PWD//${HOME//\//\\\/}/\~}\" && set -o history"
编辑:解释histon标题的内容-gnome-terminal中的窗口标题通常为“ $ USER @ $ HOSTNAME:$ {PWD}”,除非您位于主文件夹/ home / foo中,显示为
~
;至少它在我的计算机上。此命令使用bash字符串替换来转义$HOME
中的斜杠,因此我们得到\/home\/foo
,然后依次将其用作正则表达式以将$PWD
中的模式替换为文字~
...,然后在顶部添加一串转义现在,当您键入histoff
时,您会获得隐身模式的标题更改,并且该会话在该窗口中的历史记录也停止了(单词histoff
是仍然记录,但之后什么也没有。如果再键入histon
,它将还原标题,并且不会记录histoff
以后的所有行,包括histon
的行,但记录了histon
之后的所有行。示例: />
## this is still logged
histoff
## this is NOT logged
echo "my password is: password";
fake_ua='If firefox and curl had a child, would it be named furl?';
curl -A "$fake_ua" https://www.itsnotap0rnsiteipromise.com/curvy-girlz/;
vi ~/Documents/maths/super-secret-squirrel/gift-ideas.txt
## this is still NOT logged
histon
## this is logged again
sudo apt install -y kmag;
评论
仅当bash退出时才检查HISTFILE的值,因此第一种方法不能按原样工作(如果还原该值,则将保存该命令)。设置+ o历史记录确实按照指示进行。
–吉尔斯'所以-不再是邪恶的'
2011年4月8日在20:10
谢谢,太好了。在执行秘密操作时,我将使用set + o历史记录和set -o历史记录来回切换;)
– Naftuli Kay
2011年4月8日23:38
未设置HISTFILE不起作用。设置-/ + o历史就像一个魅力!谢谢
– kholofelo Maloma
15-10-28在13:10
提示:如果在命令前放置一个空格(以空格开头的命令),该空格将不会记录在您的历史记录中,并且向上/向下箭头键也不会显示该空格。
–马赫迪
17年7月3日在16:21
这在zsh btw中不起作用
–Shubham Chaudhary
18年6月5日在15:36