Как удалить одну строку из истории?

Вы хотите использовать -p опция; -D для динамического перенаправления портов, то есть создавая перенаправление портов на существующем соединении.

213
26.09.2012, 22:54
10 ответов

Профилактические меры

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

prompt$ echo saved
prompt$  echo not saved \
> #     ^ extra space

Чтобы это работало, Вам нужно также ignorespace или ignoreboth в HISTCONTROL. Например, выполненный

HISTCONTROL=ignorespace

Для установки этой персистентной настройки вставьте его Ваш .bashrc.

Посмертная очистка

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

history

отобразить список команд в Вашей истории. Найдите число рядом с тем, которое Вы хотите удалить (например, 1234) и выполнить

history -d 1234

Кроме того, если строка, которую Вы хотите удалить, была уже записана в Ваш $HISTFILE (который обычно происходит, когда Вы закончите сессию по умолчанию), необходимо будет записать обратно к $HISTFILE, или строка вновь появится при открытии новой сессии:

history -w
364
27.01.2020, 19:28
  • 1
    Это работало. Я думаю, что мы должны получить ~/.bashrc после изменения его... –  B Seven 26.09.2012, 21:00
  • 2
    @jw013 я установил PROMPT_COMMAND на history -a, в этом случае это уже записано в файл истории, а не на выходе в соответствии с нормальной конфигурацией. Конкретно: mywiki.wooledge.org/BashFAQ/088 –  jordanm 22.10.2012, 06:54
  • 3
    После удаления одной строки необходимо выписать текущую историю к использованию $HISTFILE history -w. Иначе, когда Вы выходите, удаленная строка все еще там! –  Felipe Alvarez 18.01.2017, 04:39
  • 4
    +1 к комментарию выше; использование history -w после history -d {num} был точно, в чем я нуждался - что критический лакомый кусочек должен быть добавлен к ответу, иначе пользователь мог бы думать, что временный файл удаляет из текущей оболочки, является на самом деле постоянным. –  michael 11.07.2017, 06:58
  1. Чтобы очистить всю свою историю, используйте

     историю -c.
    
  2. Чтобы удалить одну строку, используйте

     history -d linenumber.
    
53
27.01.2020, 19:28

У меня есть это в моем ~ / .bashrc , что заставляет команду $ забудьте удалить предыдущую команду из история

function forget() {                                                              
   history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);              
}
7
27.01.2020, 19:28

Вы всегда можете редактировать и удалять записи из ~/.bash_history, полезно, когда вы хотите удалить либо одну запись, либо несколько

6
27.01.2020, 19:28

Если вы хотите забыть весь сеанс bash, вы можете убить текущий процесс bash. Так как переменная $$ содержит pid текущей оболочки, вы можете:

kill -9 $$
5
27.01.2020, 19:28

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

history -c && history -w && logout

Удачи.

2
27.01.2020, 19:28

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

В этом примере вывод истории будет удален со строки 1 по строку 150.

for i in `history | awk 'NR > 1 && NR <=150{print   $1}'`; do history -d $i; done
0
27.01.2020, 19:28

Чтобы удалить одну строку из файла истории, используйте параметр -d. Например, если вы хотите очистить команду, в которой вы ввели открытый текстовый пароль -, как в приведенном выше сценарии, найдите номер строки в файле истории и выполните эту команду.

$ history -d 2038

Чтобы удалить или очистить все записи из истории bash, используйте приведенную ниже команду history с параметром -c.

$ history -c

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

$ cat /dev/null > ~/.bash_history

В Bash 5 также можно удалить диапазон

history -d 511-520

5
27.01.2020, 19:28

1 -в типе терминала bash

history#Список всех команд в истории.bash _файл истории с номерами строк

бывший:

 ...
  987  cd
  988  ssh x@127.0.0.1
  990  exit
  991  cd

2 -выберите номер строки CMD, которую вы хотите удалить

history -d 988

Обратите внимание, :если вы хотите удалить, например, последние 3 CMD, просто выберите номер третьей строки снизу, например :988, и повторите CMD history -d 9883 раза подряд.

2
16.03.2020, 09:05

В Ubuntu (, но я почти уверен, что это будет работать и для других дистрибутивов Linux, а также для MacOS таким же образом )файл истории bash можно просто отредактировать в произвольном текстовом редакторе:

$ nano ~/.bash_history

Если вы не знаете, где он хранится, вы можете найти его следующим образом:

$ echo $HISTFILE

Или вы можете сделать это более общим способом:

$ nano $HISTFILE
0
02.04.2020, 07:48

Теги

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