Я согласен, это раздражающее поведение по умолчанию (и кажется уникальным для bash
/readline
). По моему собственному опыту, по крайней мере, если я отхожу от строки, которую я изменил, это обычно происходит потому, что я отказался от этих модификаций и предпочел бы отказаться от них, чем потерять исходную строку!
Оставить эти изменения там может быть полезно, если причина, по которой вы отказались от изменения этой строки, заключается в том, что вам нужно было сначала сделать что-то еще, и это может быть первоначальным оправданием для того, чтобы сделать это таким образом. Тем не менее, переопределение исходной записи истории - это плохо, IMO, поскольку вы теряете доказательства того, что вы сделали раньше.
Наиболее неприятные случаи, когда вы в конечном итоге очищаете всю строку, чтобы начать новую команду заново, затем переходите к другой строке, которую вы принимаете, и позже понимаете, что одна запись в истории, похоже, исчезла.
Кроме того, даже если вы намеревались сохранить эти изменения, если вы хотите вернуться к этой измененной строке, вам нужно будет снова найти ее.
Поведение zsh
более полезно IMO. Вы можете изменить всю историю, пока не принимаете строку и переходите туда и обратно между измененными строками, но как только вы принимаете новую строку, она добавляется в историю, но старые строки истории сохраняются (при нажатии Ctrl+C отменяет все изменения без добавления новой строки в историю ).
И если вы хотите сохранить изменения, которые вы внесли в разные строки, вы должны сохранить строку в очереди с помощью Alt+Q (, начало которой автоматически вытягивается при следующем приглашении )или сохраните его в списке killring с помощью Ctrl+U .
К счастью, в bash
/ readline
,вы можете изменить поведение с помощью
bind 'set revert-all-at-newline on'
(или set revert-all-at-newline on
в ~/.inputrc
, поэтому это применимо ко всем приложениям, использующим readline ).
Затем вы получите поведение, аналогичное yash
, то есть то же, что и zsh
, но без удержания очереди (, но вы по-прежнему можете использовать killring(вытащил с помощью Ctrl+Y , Alt+Y)).
Трудно сказать, потому что это действительно зависит от того, что происходит в мире. В большинстве случаев ежемесячные обновления для машины (с редкими исключениями из-за серьезных проблем с безопасностью )должны подойти. Однако это просчитанный риск. Время, которое вы тратите между каждым обновлением, — это время, когда ваша система потенциально уязвима.
Еще одна часть — насколько велика ваша цель и чем именно вы занимаетесь. Если вы большая цель (, например. Google )и работающие серверы с выходом в Интернет -, вы почти наверняка должны исправить свои серверы, как только сможете. Если, с другой стороны, вы частное лицо, просто запускаете рабочий стол дома за брандмауэром, вероятность того, что вы станете целью атаки, значительно снижается.
В конце концов, я не уверен, что на этот вопрос можно ответить. Строго говоря, ответ таков: «Да, любое время между выпуском обновления и запуском обновлений — это время, когда вы уязвимы». Но с практической точки зрения ваш риск может быть очень низким (в зависимости от вашей ситуации ). И этот расчет риска — это не то, что вы должны доверять какому-то случайному человеку в Интернете.
Это действительно зависит от того, что вы используете. В любом случае вам следует периодически (раз в неделю или около того )проверять домашнюю страницу Arch Linux, чтобы убедиться, что для вашей машины не ожидаются критические обновления.