Как предотвратить удаление команд из истории?

Я заметил, что когда я выполняю свои команды с помощью клавиш со стрелками, ВВЕРХ и ВНИЗ, то, если я затем редактирую команду, она редактирует ее в истории, и я даже могу удалить такую ​​команду, однако я не хочу ее чтобы это отразилось на командах в истории, я не хочу, чтобы они фактически удаляли их в истории, я только позволяю мне редактировать то, что я печатаю, но не изменяю историю посредством этого. Так как я могу сделать так, чтобы это на самом деле не изменяло историю, а только команду, которую я выполняю?

2 ответа

Решение

Я спросил что-то похожее в Unix & Linux: как отменить изменения в истории команд?,

Великолепный ответ, который я получил от Жиля, гласит:

Если вы отредактировали запись истории, но еще не нажали Enter, чтобы вернуться к исходной записи, несколько раз нажмите Ctrl+_ - undo команда - до тех пор, пока не произойдет дальнейшее изменение. Вы вернулись к исходной записи.

Я столкнулся с той же проблемой, и пока я играл и пытался понять, что происходит, я просто понял следующее:

Если вы позвоните из history командную строку, которую вы на самом деле набрали ранее в том же текущем сеансе терминала, а затем отредактировали ее (возможно, удалив), но затем прервали редактирование, оставив эту (историю) командную строку, используя, например, Down стрелка, чтобы вернуться к подсказке текущей текущей командной строки, а затем, когда вы выходите из терминала, изменения записываются в .bash_history файл.

Такое поведение не происходит, если вы редактируете и прерываете редактирование в командной строке, которая уже была записана в .bash_history файл до начала сеанса терминала.

Другими словами, пока терминальная сессия открыта, вновь набранные командные строки хранятся только в памяти, а не в .bash_history, Вы можете вспомнить их, используя up стрелка или призывая history команды, и вы можете редактировать их, когда сеанс открыт (при вызове historyкоманда, строки измененных команд будут обозначены звездочкой *). Только когда вы выходите из сеанса, команды сеанса записываются "как есть" в .bash_history файл, сохраняя тем самым последние изменения, которые вы сделали на них перед выходом из сеанса.

Смотрите также ответ от Falconer там.

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