Я использую bash, и мне бы хотелось, чтобы некоторые команды не сохранялись в истории.
и я только что вспомнил другой ответ, это фактический ответ на ваш вопрос.
если у вас есть «ignorespace» в HISTCONTROL, то bash не запомнит ни одну строку, начинающуюся с символа пробела. он не появится даже в истории текущей оболочки, не говоря уже о сохранении в $ HISTFILE.
например у меня есть export HISTCONTROL = 'ignoreboth: erasedups' в моем ~ / .bashrc
вот подробности со страницы руководства bash:
HISTCONTROL A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignorespace, lines which begin with a space character are not saved in the history list. A value of ignoredups causes lines matching the previous history entry to not be saved. A value of ignoreboth is shorthand for ignorespace and ignoredups. A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. If HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value of HISTIGNORE. The second and subsequent lines of a multi- line compound command are not tested, and are added to the history regardless of the value of HISTCONTROL.
Вот несколько уроков истории, которые я извлек из гугла:
Вы можете настроить историю, чтобы игнорировать определенные строки. В этом примере я проигнорировал команды ls, passwd и любые команды с префиксом пробела.
экспорт HISTIGNORE = "ls: passwd:"
Чтобы отключить историю вашего сеанса, вы можете выполнить:
экспорт HISTSIZE = 0
Если вы просто хотите удалить последнюю команду из истории, вы можете нажать Стрелка вверх, с последующим Ctrl - U (стереть до начала строки), затем Стрелка вверх очередной раз.
Вы можете стереть любую отдельную строку из истории вот так. Просто используйте стрелку вверх или поиск или что-то еще, чтобы сделать текущую редактируемую командную строку, затем нажмите Ctrl - U, а потом Стрелка вверх или Стрелка вниз перейти на другую строку истории.
Я обнаружил это случайно однажды много лет назад. Понятия не имею, задокументировано это или нет.
В целом, однако, проще не сохранять историю текущей оболочки вообще с помощью:
HISTFILE=/dev/null
Вы можете отключить HISTFILE
переменная. Из man bash
:
HISTFILE The name of the file in which command history is saved (see HIS- TORY below). The default value is ~/.bash_history. If unset, the command history is not saved when an interactive shell exits.
Я не думаю, что это предотвращает появление команды в локальной истории оболочки до ее выхода.
Я иногда делаю
export HISTFILE=/dev/null
Вижу, что этот метод никто не писал, так что напишу.
history -d $((HISTCMD-1)) && history -d <command or number of command>
history -d
удаляет указанную запись из истории.
HISTCMD
сохраняет command_number команды, которая будет выполнена следующей. Итак, (HISTCMD-1) относится к последней выполненной команде.
После запуска команды и поскольку она также удаляет саму команду, то при поднятии стрелки вверх команда не будет отображаться, поэтому, если вы планируете использовать это часто, было бы лучше создать псевдоним:
alias hc='history -d $((HISTCMD-1)) && history -d $1'
Тогда вы сможете:
$ hc command