Как сбросить отредактированную строку истории в Bash?

Как сбросить отредактированную строку истории в Bash?

В Bash вы можете нажать стрелку вверх (и вниз), чтобы перемещаться по истории. Затем вы можете изменить команду перед ее выполнением. Иногда я неправильно изменяю команду и хочу сбросить ее до того состояния, которое было в истории изначально. Есть ли способ сделать это?

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

решение1

Отменить — Cx Cu (или C-_, для чего вам, возможно, придется набрать C-/)

решение2

Файл, содержащий историю bash, называется "~/.bash_history", что вполне уместно (по крайней мере в Ubuntu, в других версиях может отличаться). Просто откройте его в своем любимом текстовом редакторе, обратите внимание, что у каждого пользователя должен быть свой собственный файл .bash_history. Также обратите внимание, что предшествующая "." означает, что это скрытый файл, поэтому он не будет отображаться в файловом браузере или с помощью команды ls, если вы не используете ее с -a.

решение3

Эта привязка не позволит невыполненным изменениям истории перезаписать оригиналы:

bind 'set revert-all-at-newline on'

Пример:

  1. Выполнятьls
  2. Нажмите стрелку вверх
  3. Добавить -Alв строку
  4. Нажмите стрелку вниз
  5. Нажмите «Возврат» (чтобы попытаться отменить изменение)

Без этой привязки:
lsбудет заменено в истории на ls -Al, даже если оно никогда не было выполнено.

С этой привязкой:
Неисполненное ls -Alисчезнет, ​​а lsостанется.

Очевидно, это означает, что невыполненные изменения истории будутникогдабыть сохранены (как поведение zsh по умолчанию). Если вы хотите восстановить только оригиналыиногда, вам придется выбрать один из других ответов.

Связанный контент