Как добавить команду в историю Bash, не выполняя ее?

6185
Grumbel

Время от времени было бы полезно добавить команду непосредственно в историю в Bash, фактически не выполняя ее. Пока что закрытая вещь, которую я нашел, это добавление #перед ней и нажатие клавиши return. Есть ли лучшие способы?

30

3 ответа на вопрос

38
Spiff

history -s команда

Никогда не знал об этой функции. Я не могу думать о немедленном использовании этого, но это полезно знать. Doug Harris 14 лет назад 0
Знаете ли вы, можно ли выполнить команду, аналогичную этой, из сценария? У меня есть скрипт `. / Resize-images.sh`, в последней строке которого указана команда, которую вы должны выполнить, чтобы отменить изменения, было бы очень полезно, если бы вместо этого скрипт мог добавить команду в мою историю, поэтому я просто нажал` up- введите `если мне нужно отменить Ben Page 12 лет назад 6
@BenPage: посмотрите оба ответа здесь: http://unix.stackexchange.com/questions/112354/history-stops-working-when-run-inside-bash-script. RustyTheBoyRobot 7 лет назад 1
8
Dennis Williamson

history -s команда

Вы можете даже связать нажатие клавиши, чтобы сделать это для вас. Вы можете ввести это в командной строке Bash:

bind '"\C-q": "\C-a history -s \C-j"' 

или добавьте это к себе ~/.inputrc:

"\C-q": "\C-a history -s \C-j" 

затем вы можете что-то набрать и нажать Ctrl- qи это будет добавлено в историю без выполнения. Пробел перед «историей» приводит к тому, что historyсама команда не добавляется в историю, если ваша HISTCONTROLпеременная содержит ignorespaceили ignoreboth. Вместо "\ Cq" можно выбрать другое нажатие клавиши.

3
Benjamin Bannier

Трудно придумать что-то более короткое, чем «команда» из одного символа, поэтому нам действительно нужно перейти на уровень нажатия клавиш. С моей настройкой bash и американской клавиатурой вы получаете:

  1. Перейти к началу строки CTRLA:: +1 инструкция, +2 нажатия клавиш
  2. Добавить #(нужно SHIFT): +1 инструкция, +2 нажатие клавиши
  3. Добавление его в историю с помощью ENTER: +1 инструкция, +1 нажатие клавиши

итого 3 инструкции, 5 нажатий клавиш.

Использование ALT#делает то же самое в 1 инструкции, 2 нажатия клавиш.

YMMV в зависимости от раскладки клавиатуры и конфигурации bash.

Проблема не в количестве нажатий клавиш, а в том, что "#command" сохраняется в истории, а не в намеченной "команде". Grumbel 14 лет назад 3
It's nice that "#command" gets stored in the history file as it lets you know that the command wasn't actually executed. This might be nice if you later wanted to review what commands you entered in order to figure out a problem. Marnix A. van Ammers 14 лет назад 1
@Grumbel, @Marnix: Согласен, я не ответил на вопрос к письму, но показал, как сделать то, что он делает сейчас, еще быстрее. Лично я думаю, что использование `# command` намного быстрее, чем` history -s command`, и также очень просто в использовании, если вы правильно отобразите `history-search-backward / -forward`. Но это дело вкуса. Benjamin Bannier 14 лет назад 1