我最近需要 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) .*
这够安全吗?除了滚动终端外,还有其他方法可以恢复模式吗?有没有更好的方法?