Есть ли способ предотвратить добавление команды в вашу историю? У меня есть команда, которую я хочу сохранить в своем файле истории, и я действительно не хочу, чтобы она была там при поиске истории, хранящейся в памяти, хотя это не так важно. Есть ли способ предотвратить это, или мне просто нужно вернуться и отредактировать мой файл истории.
обновление: я не понимал, что это может быть специфичным для оболочки. Моя оболочка есть zsh
. Вы можете отвечать за другие оболочки, чтобы люди знали, как сделать это в своей оболочке.
bash
security
zsh
command-history
xenoterracide
источник
источник
Ответы:
В ЗШ :
Сначала вставьте
setopt HIST_IGNORE_SPACE
в свой~/.zshrc
. Теперь после того, как вы снова войти в систему , вы можете префикс любые команды , которые вы не хотите хранить в истории сspace
.Из руководства пользователя следующие 3 опции могут использоваться, чтобы сказать, что определенные строки вообще не должны входить в историю:
источник
| somecommand
preexec
которую можно использовать для этого. Если он возвращает ненулевое значение, команда не сохраняется в истории.setopt HIST_IGNORE_SPACE
в~/.zshrc
Если вы запускаете команду снова и снова, вы можете использовать функцию игнорирования истории вашей оболочки. Допустим, у вас есть secret.server.com, к которому вы обращаетесь по ssh, FTP-файлы и т. Д., И вам не нужна ни одна строка, в которой упоминается secret.server.com:
В
bash
тебе бы поставилитогда как в
zsh
параметре называетсяВы можете перечислить несколько шаблонов с двоеточием, разделяющим их. Обратите внимание, что каждый шаблон сопоставляется с полной строкой ввода , поэтому вам может потребоваться включить *. Например, следующее исключит
fortune
из истории, но сохранитfortune -l
:С установленным HISTIGNORE ничто, соответствующее шаблонам, которые вы перечисляете, не будет сохранено в
.bash_history
/.zsh_history
и даже клавиша со стрелкой вверх, которая обычно вызывает вашу предыдущую команду, не будет работать, если она соответствует вашему шаблону.источник
HISTIGNORE="^fortune*"
игнорировать,fortune -l
но держатьmyfortune
?В bash используйте
HISTCONTROL
переменную.Установите его в
HISTCONTROL=ignorespace
(илиHISTCONTROL=ignoreboth
). С этого момента, когда вы начинаете строку с пробела , она не будет сохранена в истории. Это позволяет избежать включения команды «не подлежит раскрытию» в некоторый файл конфигурации.Даже так бывает, что забывают добавить пробел, а затем хотят вернуться. Чтобы удалить запись в истории, использовании
history -d <index>
, сindex
числом найденных с помощьюhistory
команды (первая колонка).источник
zsh
?Самый простой способ для одноразового использования
где
$
представляет подсказку начальной оболочки и$$
представляет подсказку подоболочки. Это работает в bash и zsh; в кш вам нужноHISTFILE=/notwritable
вместо. Обратите внимание, что значение имеет значение,HISTFILE
когда записывается файл истории, а не когда запускается команда. Bash, ksh и zsh записывают в файл истории при выходе (zsh может делать это чаще в зависимости от конфигурации).Кроме того, вы можете использовать bash или zsh, чтобы игнорировать строки, соответствующие определенным шаблонам (это уже охватывается другими ответами).
Другая возможность в Zsh
fc -p
помещает текущий список истории в стек и запускает новый, который не связан с файлом сохранения.fc -P
вытаскивает этот несохраненный список истории из стека и вообще забывает об этом.Во время выполнения процесса команда и ее аргументы (а также в некоторых системах ее окружение) будут отображаться в таблице процессов (
ps
вывод). Root может видеть прошлые команды в базе данных системного учета и может делать больше регистрации без вашего контроля. И, вероятно, будут все виды судебных доказательств, которые могут приблизительно показать, какую команду вы выполняли (например, время изменения файла). Таким образом, вы не получите конфиденциальность против решительных подслушивающих.источник