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
убьет этот процесс.