Как предотвратить удаление команд из истории?
Я заметил, что когда я выполняю свои команды с помощью клавиш со стрелками, ВВЕРХ и ВНИЗ, то, если я затем редактирую команду, она редактирует ее в истории, и я даже могу удалить такую команду, однако я не хочу ее чтобы это отразилось на командах в истории, я не хочу, чтобы они фактически удаляли их в истории, я только позволяю мне редактировать то, что я печатаю, но не изменяю историю посредством этого. Так как я могу сделать так, чтобы это на самом деле не изменяло историю, а только команду, которую я выполняю?
2 ответа
Я спросил что-то похожее в Unix & Linux: как отменить изменения в истории команд?,
Великолепный ответ, который я получил от Жиля, гласит:
Если вы отредактировали запись истории, но еще не нажали Enter, чтобы вернуться к исходной записи, несколько раз нажмите Ctrl+_ -
undo
команда - до тех пор, пока не произойдет дальнейшее изменение. Вы вернулись к исходной записи.
Я столкнулся с той же проблемой, и пока я играл и пытался понять, что происходит, я просто понял следующее:
Если вы позвоните из history
командную строку, которую вы на самом деле набрали ранее в том же текущем сеансе терминала, а затем отредактировали ее (возможно, удалив), но затем прервали редактирование, оставив эту (историю) командную строку, используя, например, Down
стрелка, чтобы вернуться к подсказке текущей текущей командной строки, а затем, когда вы выходите из терминала, изменения записываются в .bash_history
файл.
Такое поведение не происходит, если вы редактируете и прерываете редактирование в командной строке, которая уже была записана в .bash_history
файл до начала сеанса терминала.
Другими словами, пока терминальная сессия открыта, вновь набранные командные строки хранятся только в памяти, а не в .bash_history
, Вы можете вспомнить их, используя up
стрелка или призывая history
команды, и вы можете редактировать их, когда сеанс открыт (при вызове history
команда, строки измененных команд будут обозначены звездочкой *
). Только когда вы выходите из сеанса, команды сеанса записываются "как есть" в .bash_history
файл, сохраняя тем самым последние изменения, которые вы сделали на них перед выходом из сеанса.
Смотрите также ответ от Falconer там.