Поскольку вы используете компьютер компании, в которой работаете, обратитесь за помощью в ИТ-отдел. Возможно, изменение подсказки противоречит политике компании. Если нет, возможно, они могут создать для вас пользовательскую подсказку или обновить свою корпоративную подсказку -. В противном случае они, скорее всего, смогут помочь вам в создании собственных пользовательских подсказок.
Как упоминалось в комментариях, «подсказки хранятся в переменных $PS1
, $PS2
, И $PS3
», хотя это может зависеть от разновидности вашей операционной системы, о которой вы забыли упомянуть.
Вы используете egrep
, который совпадает с grep -E
, т. е. позволяет использовать расширенные регулярные выражения.
В расширенном регулярном выражении |
— это чередование (, которое вы хотите использовать ), а \|
соответствует буквальному символу |
.
Следовательно, вы хотите
grep -w -i -E 'secret|password|key|credential|http'
или
grep -i -E '\<(secret|password|key|credential|http)\>'
, где \<
и \>
соответствуют границам слов.
Или
grep -w -i -F \
-e secret \
-e password \
-e key \
-e credential \
-e http
... если вы хотите выполнять сравнение строк, а не сопоставление с регулярным выражением.
Кроме того, вы должны всегда заключать раскрытие переменной в двойные кавычки. Это позволит вам также правильно обрабатывать файлы с именами, которые содержат символы пробела (, пробел, табуляцию, перевод строки )и имена, которые содержат символы подстановки имени файла (*
, ?
,[...]
):
#!/bin/sh
for name in./*; do
[ ! -f "$name" ] && continue # skip non-regular files
printf '==== %s ====\n' "$name"
strings "$name" | grep...
done
См. также
Цикл for
не нужен. Используйте strings
для вывода имени файла и десятичного смещения, затем передайте любые строки длиной не менее трех символов вegrep
:
strings -n 3 -f -t d./* 2> /dev/null |
egrep '[[:alnum:][:punct:]]*(secret|password|key|credential|http)'\
'[[:alnum:][:punct:]]*$'
Три символа вместо стандартных четырех нужны, чтобы не пропустить "ключ" .
Так как у нас нет примеров входных файлов, вот демонстрация, показывающая первые десять совпадений в каталоге /bin/
:
strings -n 3 -f -t d /bin/* 2> /dev/null |
egrep '[[:alnum:][:punct:]]*(secret|password|key|credential|http)'\
'[[:alnum:][:punct:]]*$' |
head
Вывод в моей системе:
/bin/bash: 78590 rl_discard_keymap
/bin/bash: 78720 rl_executing_key
/bin/bash: 79076 rl_bind_key
/bin/bash: 79847 emacs_standard_keymap
/bin/bash: 79905 _rl_keymap
/bin/bash: 81110 _rl_executing_keyseq_size
/bin/bash: 81598 rl_bind_keyseq_if_unbound
/bin/bash: 81640 rl_bind_keyseq
/bin/bash: 81736 bind_keyseq_to_unix_command
/bin/bash: 81863 _rl_dispatching_keymap