Как удалить выбранные результаты из истории bash?

Fprintd

Fprintd находится в Официальном репозитории Ubuntu.

Он также предоставляет драйверы.

Может быть установлен с помощью:

1
задан 13 April 2017 в 15:25

4 ответа

Используйте:

history -d OFFSET

, чтобы удалить запись истории со смещением OFFSET еще до того, как она была добавлена ​​в ваш файл истории bash. Чтобы узнать правильную OFFSET, вам нужно только запустить команду history. Это число от начала строки, которое содержит запись истории, которую вы хотите удалить.

И чтобы сохранить изменения в истории использования:

history -w

См. подробнее в этом руководстве.

119
ответ дан 24 May 2018 в 18:02
  • 1
    не плохо :) Хорошо, чтобы по-новому. – Saurav Kumar 27 February 2014 в 17:34
  • 2
    @SauravKumar Неплохо?!? Наверное, это лучший способ ... – Radu Rădeanu 27 March 2014 в 23:04
  • 3
    READ FIRST: Чтобы быть понятным, вы должны сделать history -w послесловия, чтобы сохранить изменения. Также OFFSET означает номер, который отображается history. Если строка, которую вы пытаетесь удалить, равна 873, то используйте history -d 873. – Cammy_the_block 2 August 2014 в 21:07
  • 4
    @ RaduRădeanu Используйте history -w после history -d, чтобы сохранить изменения. – Cammy_the_block 2 August 2014 в 21:09
  • 5
    Это должен быть правильный ответ. – topher 3 June 2015 в 14:47

Отредактируйте файл ~/.bash_history и удалите один раз с помощью опечаток

Например, вставьте эту команду:

gedit ~/.bash_history

Отредактируйте что-то, что вам нравится, и после сохранения файла и перезапустите Терминал. Корневая команда:

sudo -i 
inser your password
gedit ~/.bash_history

, если вы хотите удалить все history -c, должна выполнить трюк

SYNTAX
history
history [n]
history -c
history -d offset
history [-anrw] [filename]
history -ps arg
KEY -c Clear список истории. Это можно комбинировать с другими вариантами, чтобы полностью заменить список истории. -d offset Удалить запись истории при смещении позиции. смещение должно указываться так, как оно появляется при отображении истории. -a Добавить в историю файлы новые строки истории (строки истории, введенные с начала текущего сеанса Bash). -n Добавить строки истории, которые еще не были прочитаны из файла истории, в текущий список истории. Это строки, прикрепленные к файлу истории с начала текущего сеанса Bash. -r Прочитать текущий файл истории и добавить его содержимое в список истории. -w Вывести текущую историю в файл истории. -p Выполнять замену истории в args и отображать результат на стандартном выходе, не сохраняя результаты в списке истории. -s Арги добавляются в конец списка истории как одна запись.

источник:

история Man Page | Баш | SS64.com
18
ответ дан 24 May 2018 в 18:02
  • 1
    Спасибо, это полезно! Вы знаете, как удалить запись в момент ввода из командной строки? Или есть команда удалить запись без открытия .bash_history? – Saurav Kumar 12 September 2013 в 14:39
  • 2
    @ bladed19899 history -c не работает. Когда я закрываю терминал и открываю его, история не удаляется. -1 ваш ответ – αғsнιη 15 June 2014 в 01:56
  • 3
    @KasiyA, -c Clear the history list. This may be combined with the other options to replace the history list completely. источник – blade19899 16 June 2014 в 13:44
  • 4
    @KasiyA Используйте history -w после history -c, чтобы записать изменения. – Cammy_the_block 2 August 2014 в 21:10

Если вы хотите немедленно удалить его с одного и того же терминала, вам нужно добавить следующее в ваш файл ~ / .bashrc.

PROMPT_COMMAND='history -a' 

и перезапустить терминал.

[d3 ] Вы можете добавить его в любом месте в файле .bashrc. Я добавил как ниже, так и другие связанные с историей вещи.

Обычно во время сеанса bash исполняемые команды не записываются. bash_history до тех пор, пока сеанс не завершится, поэтому PROMPT_COMMAND='history -a' вводит команду тогда и там в .bash_history.

Теперь, когда вы совершаете ошибку или ошибку в команде и хотите ее удалить, тогда и там просто выполните следующие [ ! d7]

sed -i '$d' ~/.bash_history

и tada он будет удален.

Чтобы упростить, вы можете использовать его для чего-то более простого и использовать его, например

alias rh ='sed -i '\''$d'\'' ~/.bash_history'

Таким образом, выполнение rh удалит последнюю выполненную команду из истории.

Вышеупомянутое временное сглаживание, которое длится только для сеанса. Чтобы сделать его постоянным или постоянным, добавьте

alias rh = 'sed -i '\''$d'\'' ~/.bash_history' 

to .bashrc

restart

Не должно быть места по обе стороны от =

Если вы не хотите псевдонима, тогда вы также можете сделать следующее

Сделать имя комманды rh и поместите его в каталог /bin:

Откройте файл say rh и вставьте следующий код, сохраните и закройте: sed -i '$d' ~/.bash_history Сделайте исполняемый файл rh и поместите его в каталог /bin: chmod +x rh sudo cp rh /bin ] Теперь используйте команду rh, чтобы удалить недавнюю команду из истории.
15
ответ дан 24 May 2018 в 18:02
  • 1
    Где добавить PROMPT_COMMAND='history -a' в .bashrc файл? И что именно он будет делать? Я пытался sed -i '$d' ~/.bash_history работать без редактирования .bashrc !! Но псевдоним не работает. Я приму ваш ответ, если вы просто уточните мой вопрос и сделайте псевдоним работы .. :) – Saurav Kumar 12 September 2013 в 20:15
  • 2
    @SauravKumar отредактировали ответ. Пропустил одиночную и двойную кавычки в команде aliasing .. Мой плохой ..: P – Stormvirux 12 September 2013 в 21:29
  • 3
    Поверьте мне или нет .. alias вещь все еще не работает. Она выполняется без какой-либо ошибки, но не удаляет запись из файла .bash_history ..: P в любом случае .. Не проблема .. Я сделал свою собственную команду и поместил его в каталог /bin. Поскольку из-за вашей команды: sed -i "$d" ~/.bash_history, она работает нормально. Я принимаю ваш ответ .. :) – Saurav Kumar 12 September 2013 в 21:48
  • 4
    Если вы не возражаете, я бы хотел отредактировать ваш ответ, чтобы он был полезен другим. – Saurav Kumar 12 September 2013 в 21:51
  • 5
    Фактически я отредактировал его. Вы должны это одобрить. – Saurav Kumar 12 September 2013 в 22:27

Если вы используете опцию «set -o vi» в bash (очень полезно для поиска с помощью клавиши Escape), вы можете искать строку и удалять строку с помощью «dd» так же, как вы делаете в " VI».

1
ответ дан 24 May 2018 в 18:02
  • 1
    Я обнаружил, что после dd я должен ввести j или k, чтобы он действительно очистил команду из истории. Если я наберу другую команду или просто нажмите Enter, bash, похоже, предположит, что это просто новая команда и что она должна сохранить старую команду в истории. Также интересно отметить, что, когда все сделано правильно, оно очищает команду, но не удаляет ее - результатом являются записи пустой истории. Но это достаточно хорошо для удаления паролей, которые я вынужден вводить в командной строке, и гораздо проще, чем другие ответы, поэтому очень спасибо за публикацию этого! – Michael Scheper 12 January 2018 в 04:30

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

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