Файл .bash_history пользователя root может выглядеть так:
line 1
line 2
line 3
line 4
Теперь я удаляю строки 3 и 4.
su
vim ~/.bash_history
#delete line 3 und 4 with dd
line 1
line 2
:wq
ENTER
CTRL + D
Но если я сейчас взгляну на .bash_history:
su
cat ~/.bash_history
#.bash_history
line 1
line 2
vim ~/.bash_history
Так как же мне удалить только часть истории, чтобы последняя строка не показывала, что я редактировал файл?
Спасибо
решение1
Использовать:
su
vim ~/.bash_history
История не сохраняет команду, если она имееткосмосперед ней.
Это зависит от HISTCONTROL
переменной. По умолчанию (для root) это ignoredups:ignorespace
.
решение2
Как уже упоминалось, вы можете использовать пробел перед командой, но это зависит от HISTCONTROL
переменной. Вот несколько альтернатив -
Вы можете фактически сказать терминалу остановиться и начать запись истории. Это можно сделать с помощью этих команд -
set +o history #stop recording history
set -o history #start recording history
Если вы уже выполнили какие-то команды и забыли остановить запись или использование пространства, вы все равно можете остановить запись, .bash_history
пока сеанс все еще открыт. Он записывается в файл, когда вы закрываете сеанс терминала. Таким образом, вы можете удалить историю текущего сеанса непосредственно перед закрытием сеанса (перед выходом su
в вашем случае). Это можно сделать с помощью этой команды -
history -c
Крайним вариантом было бы убить процесс терминала, когда вы закончите выполнять все команды. По сути, вы убиваете процесс до того, как он сможет записать историю в файл.
kill -9 $$
$$
выдаст текущий идентификатор процесса терминала и kill -9
завершит этот процесс.