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


32

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

Ответы:


39

history -s команда


Никогда не знал об этой функции. Я не могу думать о немедленном использовании этого, но это хорошо знать.
Даг Харрис

7
Знаете ли вы, можно ли выполнить команду, подобную этой, из сценария? У меня есть сценарий ./resize-images.sh, в последней строке которого указана команда, которую вы должны выполнить, чтобы отменить изменения, было бы очень полезно, если бы вместо этого сценарий мог добавить команду в мою историю, поэтому я просто нажал, up-enterесли мне нужно отменить
Бен Страница

1
@BenPage: посмотрите оба ответа здесь: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot

9

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

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

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

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

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

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


3
Проблема не в количестве нажатий клавиш, а в том, что «#command» хранится в истории, вместо намеченной «команды».
Грамбель

1
Хорошо, что "#command" хранится в файле истории, так как он позволяет вам знать, что команда на самом деле не была выполнена. Это может быть хорошо, если вы позже захотите просмотреть, какие команды вы ввели, чтобы выяснить проблему.
Марникс А. ван Аммерс

2
@Grumbel, @Marnix: Согласен, я не ответил на вопрос на письмо, но показал, как сделать то, что он делает сейчас, еще быстрее. Лично я думаю, что использование #commandнамного быстрее history -s command, а также очень простое в использовании, если вы history-search-backward/-forwardправильно наносите карту . Но это вопрос вкуса.
Бенджамин Банье
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.