如何防止使用 grep 时密码或其他敏感信息存储在 bash 历史记录中?

如何防止使用 grep 时密码或其他敏感信息存储在 bash 历史记录中?

我最近需要 grep 查找可能已保存在文件中的密码。我不希望该行出现在 bash 历史记录中。

使用 grep 时,如何防止密码或其他敏感信息存储在 bash 历史记录中?例如,如何让 grep 从 stdin 或控制台读取模式?

答案1

如果您HISTCONTROL=ignorespace在 .bashrc 中输入命令名称,并在命令名称前面放置一个空格,则它将不会被添加到历史记录中。

$ export HISTCONTROL=ignorespace
$ grep "passwd" secret_password_file.txt   # added to history
$  grep "passwd" secret_password_file.txt  # not added to history

答案2

只是为了完整性,我回答了正文中的问题:如何让 grep 从 stdin 读取模式:

您可以使用以下-f选项:

grep -f- /path/to/file

这将从中读取任意数量的模式stdin,每行一个。(-意味着stdin;您还可以指定一个包含模式的文件,每行一个。)grep将匹配与/path/to/file任何指定模式匹配的行。

答案3

这是我能想到的最好的办法:

grep $(read -p "Pattern: "; echo $REPLY) .*

这够安全吗?除了滚动终端外,还有其他方法可以恢复模式吗?有没有更好的方法?

相关内容