Введу очень длинную команду в оболочке. Теперь продолжайте перемещать стрелку вверх в историю, настраивать ее и делать намного дольше.В какой-то момент вы думаете: «Мне следовало сделать эту команду многострочной, когда я начинал». Что ж, теперь, когда команда состоит только из одной строки, есть ли способ разбить ее?
Пример:
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 в каждую строку, затем скопировать / вставить ее обратно в интерфейс командной строки. Это уродливо-примитивно.
Спасибо
Многострочные команды всегда будут архивироваться в истории команд как одна строка. В командной строке терминала нельзя изменить строку, чтобы она отображалась в нескольких строках.
Для этого нужно открыть команду в редакторе по умолчанию. Наведите курсор на место в вашей команде и нажмите Ctrl + X E . Это открывает команду в редакторе по умолчанию ( nano
в Ubuntu), где вы можете вносить все свои изменения, включая разделение строк. В nano нажмите Ctrl + S X , чтобы сохранить изменения и закрыть редактор: ваша команда будет немедленно выполнена.