Ubuntu: удалить часть корня.bash_history без следов

Файл root .bash_history может выглядеть так:

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

ВОЙТИ
CTRL + D

Но если я взгляну сейчас на.bash_history:

su
cat ~/.bash_history

#.bash_history
line 1
line 2
vim ~/.bash_history

Так как же я могу удалить только часть истории без последней строки, показывающей, что я отредактировал файл?

Спасибо

2 ответа

Решение

Использование:

su
 vim ~/.bash_history

История не сохраняет команду, если перед ней есть пробел.


Это зависит от HISTCONTROL переменная. По умолчанию (для root) это ignoredups:ignorespace,

Как уже упоминалось, вы можете использовать пробел перед вашей командой, но это зависит от HISTCONTROL переменная. Вот несколько альтернатив -

Вы можете фактически сказать терминалу, чтобы он остановился и начал запись истории. Это можно сделать с помощью этих команд -

set +o history      #stop recording history
set -o history      #start recording history

Если вы уже выполнили некоторые команды и забыли остановить запись или использовать пробел, вы все равно можете остановить их запись в .bash_history пока сессия все еще открыта. Он записывается в файл при закрытии сеанса терминала. Таким образом, вы можете удалить текущую историю сеанса непосредственно перед закрытием сеанса (перед выходом su в твоем случае). Это можно сделать с помощью этой команды -

history -c

Крайний вариант - убить процесс терминала, когда вы закончите выполнять все команды. Вы в основном убиваете процесс, прежде чем он сможет записать историю в файл.

kill -9 $$

$$ даст текущий идентификатор процесса терминала и kill -9 убьет этот процесс.

Другие вопросы по тегам