21

Недавно мне пришлось поискать пароль, который, возможно, был сохранен в файле. Я не хотел, чтобы эта строка появлялась в истории bash.

Как я могу предотвратить сохранение пароля или другой конфиденциальной информации в истории Bash при использовании grep? Например, как я могу получить grep для чтения шаблона из стандартного ввода или консоли?

3 ответа3

38

Если вы 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
5

Просто для полноты я отвечаю на вопрос в теле: как заставить grep читать шаблоны из stdin:

Вы можете использовать опцию -f :

grep -f- /path/to/file

Это будет читать любое количество шаблонов из stdin , по одному на строку. (- означает stdin ; вы также можете указать файл с шаблонами, по одному на строку.) grep будет сопоставлять строки в /path/to/file которые соответствуют любому из указанных шаблонов.

2

Это лучшее, что я мог придумать:

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

Это достаточно безопасно? Есть ли способ восстановить шаблон кроме прокрутки терминала? Есть ли лучший способ?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .