Есть ли способ сохранить команду в истории bash, не выполняя ее? например
$ cmd [a long list of arguments]
и теперь во время набора я помню, что сначала хотел бы сделать что-то еще. Могу ли я иметь что-то вроде
$ cmd [a long list of arguments][some-key-strokes]
и это на самом деле не выполняется, но входит в историю Bash, чтобы я мог использовать его позже?
#
, а затем нажимаю Enter.Ответы:
Возможно, есть и лучший способ, но вы можете использовать
:p
модификатор расширения истории, чтобы напечатать текущую строку комментария без выполнения.!#
текущая строка, и%
сама по себе ничего не будет соответствоватьисточник
ls -al
+1Используйте
-s
опцию дляhistory
команды:history -s
Удобно, чтобы вызов к себе не добавлялся в историю команд, поэтому в вашей истории он выглядит так, как будто вы выполнялись,cmd
фактически не делая этого.источник
Обычно это делается
Обратите внимание, что название истории может отличаться в вашей системе. Поэтому вы можете использовать
HISTFILE
среду varчто делает:
источник
Обычно я просто добавляю # в начало строки, чтобы преобразовать строку в комментарий:
Я предпочитаю этот способ, потому что вы можете сделать это всего лишь 3 [4, если вам нужно SHIFT, чтобы вставить #] нажатий клавиш
^ а идет в начало текущей строки
# добавляет комментарий
ENTER выполняет комментарий
источник
... или используйте комбинацию клавиш:
ESC #
Смотрите также: Bash - сохранить команду без ее выполнения
источник
Вы можете попробовать добавить пробел и | (труба) в конце строки, нажав ввод, а затем Ctrl-C'ing.
( Space, |, Enter, Ctrl+ C)
Команда будет в вашей истории с | в конце (можно просто удалить с помощью backspace) вместо # в начале (потенциально более утомительно удалить).
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не знаю, всегда ли это работает! Используйте на свой риск!
источник
Вы можете попробовать использовать эту строку:
history -s -p $COMMAND
От
help
:Это означает, что вы можете расширить такие вещи, как
!!
и сохранить результат в нижней части истории.источник
history -s
был дан в ответе два года назад. Улучшается ли-p
это? Что делает-p
? (Если это имеет смысл, вам следует отредактировать свой ответ, чтобы сделать его лучше, а не отвечать на мой комментарий другим комментарием.)Другой вариант - перейти в начало строки и выполнить то, что вы собирались сделать, а затем &&, например
Так что, если то, что вы хотели сделать, будет успешным, ваша команда будет запущена сразу после этого, а если она потерпит неудачу, ваша команда не запустится, но она останется в истории. Вы могли бы также сделать
Поскольку проверка без аргументов не удастся, но это несколько дополнительных нажатий клавиш по сравнению с
#
методом.источник
Я думаю, что «некоторые нажатия клавиш», которые вам нужны, это Ctrl-U и Ctr-Y, которые сохраняют строку в kill-ring, а затем возвращают ее обратно. Это не входит в историю, но тогда я думаю, что не должно, так как ты этого не делал.
Команды убийства Readline
Убивать и дергать
Я узнал об этом несколько лет назад, затем забыл и пошел искать эти ключевые нажатия тоже.
Это также обсуждается здесь: /unix/140741/how-to-save-a-command-you-entered-without-executing-it
источник