У меня есть пара вопросов об истории терминальной или командной строки, которая хранится в ~/.bash_history
.
Я вижу файл в терминале с history
команда, но если я пытаюсь открыть его с gedit bash_history
файл абсолютно пуст. Почему?
Я нашел, как удалить определенное число строк в файле от терминала с этой строкой кода:
for i in {1..N}; do history -d N; done
где N является количеством строк (или команды), Вы хотите удалить, но теперь файл истории показывает эту последнюю команду, и это не очень умно, при попытке покрыть свой материал. Таким образом, вопрос: Как я могу дать последнюю строку кода и удостовериться, что это не становится зарегистрированным?
Вы просто забыли предыдущую точку, команда для открытия Вашего (удар), который файл истории терминала
gedit ~/.bash_history
, Этот файл только обновляется когда Вы близкий терминал.
Для удаления последнего 10 строки из этого файла и не получают эту команду, саму зарегистрированную, открывают новый терминал и выполняют следующую цепочку команд:
sed -n -e :a -e '1,10!{P;N;D;};N;ba' ~/.bash_history && history -c && exit
или
for i in {1..10}; do sed -i '$d' ~/.bash_history; done && history -c && exit
или
head -n -10 ~/.bash_history > ~/.b_h_2 && mv ~/.b_h_2 ~/.bash_history && history -c && exit
sed
или head
соответственно удаляет выбранные строки от ~/.bash_history
, history -c
очищает историю терминала и exit
завершения это.
bash_history файл является скрытым файлом, начиная с точки. Необходимо сделать
gedit ~/.bash_history
, Это откроет файл в gedit.
Если Вы хотите удалить только определенные части Вашего журнала команды затем, вышеупомянутые методы очень хорошо. Если Вы хотите остановить команду, регистрирующуюся для конкретной сессии удара, затем выпустить команду
unset HISTFILE
, Чтобы быть более решительными, если Вы не хотите, чтобы какая-либо из Ваших команд была зарегистрирована , то можно сделать
rm ~/.bash_history
ln -s /dev/null ~/.bash_history
Примечание, что первый метод был бы в действительности только для единственной сессии, тогда как второй метод остановит команду, регистрирующуюся для всех будущих сессий.
Я понимаю, что это уже имеет принятый ответ, но это - то, как я делал его с 80-х. Это - отличный способ скрыть Ваши дорожки, и это - много подход фазы. По большей части его, который не замечен, если каждый действительно не обращает внимание. Вот то, как его сделанный.
Откройте терминал/оболочку/сессию и сделайте:
chmod 444 ~/.bash_history
выходят, оболочка откройте терминал/оболочку/сессию и сделайте: Вот некоторые творческие способы пойти о стирании истории постоянно
vi ~/.bash_history
9999999 dd
<esc>wq!
sudo echo "which ls" > ~/.bash_history
sudo echo "cd ~/;ls" >> ~/.bash_history
затем в придачу:
chmod 444 ~/.bash_history
выходят, оболочка
открывают новую оболочку и тип
history
, что делает это менее примечательным, то, если Вы сделаете ls-ratl, то ~/.bash_history в конечном счете исчезнет в скрежете списка каталогов. Это не обнаружится как ссылка, которая привлекла бы ненужное внимание. Большинство людей не делает-a на своем корне, который полезен, когда эмуляция желаема.
оборотная сторона к этому подходу - Вы, теряют Вашу способность возвратиться и получить Вашу историю. фактический ~/.bash_history файл мог также закончиться наверху списка каталогов, так как он может заканчиваться с действительно старой датой модификации со временем, которая сам по себе могла бы привести к исследованию, что что-то неправильно.
1) Выполнение sh
; это порождает подоболочку пепла, который не записывает историю вообще. Отредактируйте оттуда
, 2) Добавляют строку HISTCONTROL=ignoreboth
к .bashrc
и делают exec bash
для постоянной замены текущей оболочки повторно инициализированной, затем сделайте все команды, которые Вы не хотите зарегистрированный с ведущим пространством.
так как я еще не могу прокомментировать, добавят мои комментарии как ответ:
man history
ответит на все это.
ответ на № 1 - то, что история находится на памяти. history -a
для сохранения в файл сразу. history -w
также сохранит, но мог бы испортить другие сессии.
ответ № 2: history -a
, gedit, удаляют строки, которые Вы хотите, history -r
История не сохраняется, пока Вы не выходите из оболочки. Попытайтесь выйти из оболочки и затем посмотрите на .bash_history снова. История команд должна быть там.