Как нам разбить существующую командную строку, уже в истории, на несколько строк

Введу очень длинную команду в оболочке. Теперь продолжайте перемещать стрелку вверх в историю, настраивать ее и делать намного дольше.В какой-то момент вы думаете: «Мне следовало сделать эту команду многострочной, когда я начинал». Что ж, теперь, когда команда состоит только из одной строки, есть ли способ разбить ее?

Пример:

foo | grep "aaaaaaaaaaaaaaaaaa" | grep "bbbbbbbbbbbbbb" | more

Теперь, чтобы упростить продолжение редактирования:

foo |\    << enter some control character here to split the line
grep "aaaaaaaaaaaaaaaaaa" |\
grep "bbbbbbbbbbbbbb" |\
more

В качестве примера проблемы это не Не работает, чтобы позиционировать после вертикальной черты, введите обратную косую черту, затем ctrl-Enter. Ни shift-Enter, ни ctrl-N и т. Д. В зависимости от нажатия клавиши новая строка действительно открывается с '>', но, похоже, она ожидает текста, который будет следовать за последним символом ("more" выше, а не "foo | ").

Старомодный способ выйти из этой ситуации - скопировать строку (мышью или из .history), вставить ее в редактор, разбить и добавить '' EOL в каждую строку, затем скопировать / вставить ее обратно в интерфейс командной строки. Это уродливо-примитивно.

Спасибо

0
задан 1 May 2021 в 03:15

1 ответ

Многострочные команды всегда будут архивироваться в истории команд как одна строка. В командной строке терминала нельзя изменить строку, чтобы она отображалась в нескольких строках.

Для этого нужно открыть команду в редакторе по умолчанию. Наведите курсор на место в вашей команде и нажмите Ctrl + X E . Это открывает команду в редакторе по умолчанию ( nano в Ubuntu), где вы можете вносить все свои изменения, включая разделение строк. В nano нажмите Ctrl + S X , чтобы сохранить изменения и закрыть редактор: ваша команда будет немедленно выполнена.

1
ответ дан 7 May 2021 в 17:41

Другие вопросы по тегам:

Похожие вопросы: