Удаление истории от ~/.bash_history

У меня есть пара вопросов об истории терминальной или командной строки, которая хранится в ~/.bash_history.

  1. Я вижу файл в терминале с history команда, но если я пытаюсь открыть его с gedit bash_history файл абсолютно пуст. Почему?

  2. Я нашел, как удалить определенное число строк в файле от терминала с этой строкой кода:

    for i in {1..N}; do history -d N; done
    

    где N является количеством строк (или команды), Вы хотите удалить, но теперь файл истории показывает эту последнюю команду, и это не очень умно, при попытке покрыть свой материал. Таким образом, вопрос: Как я могу дать последнюю строку кода и удостовериться, что это не становится зарегистрированным?

8
задан 3 September 2017 в 22:05

7 ответов

  1. Вы просто забыли предыдущую точку, команда для открытия Вашего (удар), который файл истории терминала

    gedit ~/.bash_history
    

    , Этот файл только обновляется когда Вы близкий терминал.

  2. Для удаления последнего 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 завершения это.

18
ответ дан 23 November 2019 в 05:22

bash_history файл является скрытым файлом, начиная с точки. Необходимо сделать

gedit ~/.bash_history

, Это откроет файл в gedit.

4
ответ дан 23 November 2019 в 05:22

Если Вы хотите удалить только определенные части Вашего журнала команды затем, вышеупомянутые методы очень хорошо. Если Вы хотите остановить команду, регистрирующуюся для конкретной сессии удара, затем выпустить команду

unset HISTFILE

, Чтобы быть более решительными, если Вы не хотите, чтобы какая-либо из Ваших команд была зарегистрирована , то можно сделать

rm ~/.bash_history
ln -s /dev/null ~/.bash_history

Примечание, что первый метод был бы в действительности только для единственной сессии, тогда как второй метод остановит команду, регистрирующуюся для всех будущих сессий.

1
ответ дан 23 November 2019 в 05:22

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

Откройте терминал/оболочку/сессию и сделайте:

 chmod 444 ~/.bash_history

выходят, оболочка откройте терминал/оболочку/сессию и сделайте: Вот некоторые творческие способы пойти о стирании истории постоянно

1:

 vi ~/.bash_history
 9999999 dd
 <esc>wq!

2 (создают поддельную историю)

 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
ответ дан 23 November 2019 в 05:22

1) Выполнение sh; это порождает подоболочку пепла, который не записывает историю вообще. Отредактируйте оттуда

, 2) Добавляют строку HISTCONTROL=ignoreboth к .bashrc и делают exec bash для постоянной замены текущей оболочки повторно инициализированной, затем сделайте все команды, которые Вы не хотите зарегистрированный с ведущим пространством.

0
ответ дан 23 November 2019 в 05:22

так как я еще не могу прокомментировать, добавят мои комментарии как ответ:

man history ответит на все это.

ответ на № 1 - то, что история находится на памяти. history -a для сохранения в файл сразу. history -w также сохранит, но мог бы испортить другие сессии.

ответ № 2: history -a, gedit, удаляют строки, которые Вы хотите, history -r

0
ответ дан 23 November 2019 в 05:22

История не сохраняется, пока Вы не выходите из оболочки. Попытайтесь выйти из оболочки и затем посмотрите на .bash_history снова. История команд должна быть там.

0
ответ дан 23 November 2019 в 05:22

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

Похожие вопросы: