history
Команда показывает все результаты, но мы можем фильтровать, чтобы получить конкретную команду, используя history | grep searchingCommand
. Это действительно полезно.
Но проблема в том, что он показывает те команды, которые были введены с ошибкой опечатки или которые были неудачными. Тогда определение правильного действительно является болью. Я проверил эту ссылку: Выборочная история команд в терминале? но это не было моим решением.
Так есть ли способ удалить те команды из истории, которые были неверны во время ввода или позже?
Ответы:
Я хотел бы добавить еще один метод изменения (или удаления) записей истории, который я обнаружил довольно случайно, когда работал с bash:
Чтобы продемонстрировать это, начните с выполнения следующих трех команд в bash:
Теперь вы можете снова выбрать эти команды, используя клавиши со стрелками или Ctrl+ pи Ctrl+ n.
Скажем, вы хотите изменить первые две команды. Перемещайтесь по истории, пока не
echo 1
появится, и измените ее наecho 1 - changed
, но НЕ НАЖИМАЙТЕ ВВОД. Если вы теперь продвинетесь дальше в своей истории, эта линия останется в своем измененном состоянии, и вы сможете отойти от нее и вернуться к ней. Теперь перейдите к строкеecho 2
и измените ее наecho 2 - changed
, снова не нажимайте ввод. Чтобы сохранить изменения в этих строках, выберите любую команду в истории, кроме этих двух, и нажмите Ctrl+ c.Конечно, вместо изменения записи истории, вы также можете удалить ее, что приведет к пустой строке в этой записи. Чтобы удалить строку, отображаемую в данный момент в приглашении, нажмите Ctrl+ e(который переходит на конец строки), а затем Ctrl+ u(который удаляет текст от начала строки до курсора).
См. Также https://unix.stackexchange.com/questions/195668/what-can-cause-an-item-to-be-deleted-from-my-bash-history/195726#195726 для более подробного объяснения техническое образование.
Самый простой способ:
Примечание :
Это изменяет только текущие команды сеанса. Если мы хотим изменить старые команды и сохранить изменения, нам нужно выполнить следующую команду перед закрытием терминала:
источник
ctrl+r
найти команду, которую вы хотите удалить / изменить. 2.end
переместить команду и удалить / изменить команду. 3.ctrl+n
перейти к следующей строке, а затем 4.ctrl+c
Использование:
удалить запись истории со смещением
OFFSET
еще до ее добавления в файл истории bash. Чтобы узнать правоOFFSET
, вам нужно всего лишь запуститьhistory
команду. Это число с начала строки, содержащей запись истории, которую вы хотите удалить.И для сохранения изменений в истории используйте:
Подробнее смотрите в этом руководстве .
источник
history -w
послесловие, чтобы сохранить изменения. Также OFFSET означает, какой номерhistory
отображается. Если строка, которую вы пытаетесь удалить, это 873, используйтеhistory -d 873
.history -w
после,history -d
чтобы сохранить изменения.Отредактируйте файл
~/.bash_history
и удалите один раз с опечаткамиНапример, вставьте эту команду:
Отредактируйте то, что вам нравится, и после этого сохраните файл и перезапустите терминал. Корневая команда:
если вы хотите удалить все
history -c
должны сделать свое делоисточник :
источник
.bash_history
?history -c
не работает Когда я закрываю терминал и открываю его снова, истории не удаляются. -1 ваш ответ-c Clear the history list. This may be combined with the other options to replace the history list completely.
источникhistory -w
после,history -c
чтобы написать изменения.Если вы хотите немедленно удалить его из того же терминала, сначала добавьте следующее в файл ~ / .bashrc.
и перезапустите свой терминал.
Вы можете добавить его в любом месте файла .bashrc. Я добавил, как показано ниже, вместе с другими историческими материалами.
Обычно во время сеанса bash исполняемые команды не записываются в .bash_history до тех пор, пока сеанс не будет завершен, и, следовательно, немедленно
PROMPT_COMMAND='history -a'
вводит команду в .bash_history.Теперь всякий раз, когда вы делаете ошибку или ошибку в команде и хотите удалить ее, просто выполните следующее
и тада это будет удалено.
Чтобы упростить его, вы можете использовать псевдоним для чего-то более простого и использовать его, например:
Таким образом, выполнение
rh
удалит последнюю выполненную команду из истории.Выше приведен временный псевдоним, который длится только для сеанса. Чтобы сделать его постоянным или постоянным, добавьте
в .bashrc
НОТА
Там не должно быть места с обеих сторон
=
Если вы не хотите, чтобы псевдоним, то вы также можете сделать следующее
Введите имя запятой
rh
и поместите его в/bin
каталог:Откройте файл, скажите
rh
и вставьте следующий код, сохраните и закройте:sed -i '$d' ~/.bash_history
Сделать
rh
исполняемый файл и поместите его в/bin
каталог:Теперь используйте
rh
команду, чтобы удалить недавнюю команду из истории.источник
PROMPT_COMMAND='history -a'
в.bashrc
файл? И что именно это будет делать? Я пыталсяsed -i '$d' ~/.bash_history
это работает без редактирования.bashrc
! Но псевдоним не работает .. Я приму ваш ответ, если вы просто разработаете мой вопрос и сделаете псевдоним рабочим .. :).bash_history
файла ..: P в любом случае .. Не проблема .. Я сделал свою собственную команду и поместил ее в/bin
каталог. Так как из-за вашей команды:sed -i "$d" ~/.bash_history
он работает нормально. Я принимаю ваш ответ .. :)удалить несколько строк (например, с 1974 по 1990, проверьте с помощью
history
команды):обратите внимание, что номер строки, которую нужно удалить, всегда один и тот же, поскольку вы постоянно удаляете эту строку и переходите к следующей.
источник
Если вы используете опцию «set -o vi» в bash (очень полезно для поиска с помощью клавиши Escape), вы можете выполнить поиск строки и удалить строку с помощью «dd» так же, как в «vi».
источник
j
илиk
после,dd
чтобы действительно очистить команду от истории. Если я наберу другую команду или просто нажмуEnter
, bash, похоже, предполагает, что это просто новая команда и что она должна сохранить старую команду в истории. Интересно также отметить, что когда все сделано правильно, команда очищается, но не удаляется - в результате появляются пустые записи истории. Но этого достаточно для удаления паролей, которые мне пришлось вводить в командной строке, и гораздо проще, чем для других ответов, так что большое спасибо за публикацию этого!У меня была ситуация, когда в моей истории bash были лишние записи с Yubikey - может быть, 50 или около того, соответствующие 'ccccc .....'. В идеале мне нужен был способ удалить записи, соответствующие шаблону, что, я полагаю, вы могли бы сделать с помощью sed или чего-то еще, предполагая, что ваша история игнорирует пробелы.
В любом случае, я стал ленивым и закончил тем, что использовал vim, искал 'cccc' и использовал 'dd', перебирая все совпадения. Не заняло больше минуты.
источник