Рейтинг:1

Удобная команда для редактирования ранее выполненной ошибочно введенной команды и перезаписи записи истории исправленной.

флаг za

до недавнего времени я был почти уверен, что ФК команда открывает ранее выполненную команду в редакторе по умолчанию, выполняет внесенные изменения и перезаписывает последнюю запись из истории bash. Однако похоже, что недавно выполненная команда на самом деле просто добавляется в конец истории bash, поэтому опечатка (которую нужно было исправить) все еще остается.

Поскольку я нахожу неправильные команды в истории bash очень раздражающими, так как время от времени я натыкаюсь на них, мне было интересно, можно ли как-то настроить оболочку bash для перезаписи записи редактирования - в первую очередь меня интересует перезапись предыдущей записи, но решение для перезаписи любой записи из истории было бы еще лучше! Я совершенно уверен, что что-то подобное уже есть (возможно, даже доступно как свойство в каком-то файле конфигурации или как добавление аргумента при вызове команды), но я не получил никаких полезных результатов при поиске в Интернете.

Я придумал один ответ, который я даю в качестве ответа на этот вопрос, но если у кого-то еще есть лучшее решение, не стесняйтесь поделиться.

zeko868 avatar
флаг za
Извините, это не совсем то, что я искал, хотя в некоторых ответах есть несколько полезных сегментов. Я опубликовал ответ, как я изначально планировал и объявил. Вот вся история удаляется, и я просто хотел удалить последнюю запись из истории - желательно, отредактировав ее в текстовом редакторе, как в случае с командой *fc*.
Рейтинг:1
флаг za

Это решение кажется мне весьма многообещающим после того, как я использовал его некоторое время.

Добавьте следующее в свой ~/.bashrc файл:

shopt -s histappend
PROMPT_COMMAND="история -a; история -c; история -r; $ PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
        если [ $# -eq 0 ]; тогда
                ФК
                история -d $(wc -l < ​​~/.bash_history)
                история -w
                история -с
                история -r
        еще
                ФК $@
        фи
}
псевдоним fc=fc_override_prev_command_if_no_args

Что это делает изменение поведение ФК команда, когда она вызывается без аргументов. Когда он вызывается с аргументами, я сделал так, чтобы он вел себя как обычно, так как в противном случае его поведение могло бы вводить в заблуждение без если / еще / фи блокировка и без еще часть вообще ничего бы не сделала.

С другой стороны, если аргументы не указаны, то ФК команда выполняется, последняя запись из истории bash удаляется, а кэшированная история перезагружается из файла.

Часть с переназначением переменной PROMPT_COMMAND я позаимствовал из здесь и я нашел это полезным, поскольку отправленные команды мгновенно доступны в истории bash других открытых в данный момент терминалов с bash (хорошо, не совсем мгновенно, но даже такое действие, как отправка ПОДПИСЬ сигнала с помощью Ctrl+C достаточно для перезагрузки кеша истории).

Не стесняйтесь редактировать этот ответ или комментировать, если вы считаете, что некоторые части решения не нужны.

Ссылка к суть с приведенным выше фрагментом доступен здесь

Ответить или комментировать

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