Ubuntu: Удалить часть root .bash_history без следов

Ubuntu: Удалить часть root .bash_history без следов

Файл .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завершит этот процесс.

Связанный контент