Добавить в корзинуПозвонить
Найти в Дзене
BASH DAYS | Linux Factory

Фича с многострочными командами в Bash

Существует неочевидный способ очень удобно вводить многострочные команды либо накидывать скрипты. Сейчас покажу на котиках.
Для этого вызывается текстовый редактор указанный у тебя по умолчанию в переменной $EDITOR. Ты снова скажешь — да блин! Это надо еще и редактор запускать?
Да, запускать надо, но для этого из коробки есть отличный нативный хоткей CTRL+x+e (а в osx кнопка CTRL со значком ^).
Как нажать CTRL+x+e и не сломать пальцы? Сначала зажимаешь и удерживаешь CTRL, следом жмешь x и не отпуская CTRL жмешь e.
Тырым-Пырым и перед тобой уже твой любимый vim/mcedit/nano/другойshit
Если получил ошибку: External editor requested but $VISUAL or $EDITOR not set. Не расстраивайся, выполни эти команды и у тебя все заработает. Вместо nano подставь своё.
EDITOR=$(which nano)
export EDITOR=$EDITOR
Либо на постоянку добавь в ~/.bashrc или ~/.zshrc и не забудь перечитать эти файлы: source ~/.bashrc && source ~/.zshrc which — команда используется для определения местоположения данного ис
Оглавление

Существует неочевидный способ очень удобно вводить многострочные команды либо накидывать скрипты. Сейчас покажу на котиках.

Для этого вызывается текстовый редактор указанный у тебя по умолчанию в переменной $EDITOR. Ты снова скажешь — да блин! Это надо еще и редактор запускать?

Да, запускать надо, но для этого из коробки есть отличный нативный хоткей CTRL+x+e (а в osx кнопка CTRL со значком ^).

Как нажать CTRL+x+e и не сломать пальцы? Сначала зажимаешь и удерживаешь CTRL, следом жмешь x и не отпуская CTRL жмешь e.

Тырым-Пырым и перед тобой уже твой любимый vim/mcedit/nano/другойshit

Если получил ошибку: External editor requested but $VISUAL or $EDITOR not set. Не расстраивайся, выполни эти команды и у тебя все заработает. Вместо nano подставь своё.

EDITOR=$(which nano)
export EDITOR=$EDITOR


Либо на постоянку добавь в ~/.bashrc или ~/.zshrc и не забудь перечитать эти файлы:
source ~/.bashrc && source ~/.zshrc

which — команда используется для определения местоположения данного исполняемого файла, который выполняется при вводе имени исполняемого файла (команды) в строке терминала. Команда ищет исполняемый файл, указанный в качестве аргумента, в каталогах, перечисленных в переменной среды PATH.


Есть еще команда select-editor, но не везде присутствует, она сразу список всех редакторов выведет в читабельном виде, тебе останется лишь выбрать циферку. Редактор установится глобально в системе без правки .bashrc/zshrc.

Так, ушли от темы, короче вызвал ты свой любимый редактор и не сломал пальцы. А дальше? А дальше накидываешь в нем скрипт или команды, которые тебе нужно выполнить в оболочке bash/zsh.

Подпишись на BashDays в телеграм


Размеренно, удобно, с подсветкой синтаксиса и хоткеев, а если у тебя прокаченный vim, так вообще полноценная IDE получается.

Накидал? Сохраняешь! Сохраняется по умолчанию во временную папку: /tmp/bash-fc.GpOzlI

И после закрытия, все команды из файла автоматически выполняются, а временный файл удаляется. Все введенные команды и выхлоп по ним продублируются в консоли. Так что не переживай, ничего не потеряешь.

Я частенько пользуюсь этим способом, когда мне нужно к примеру выполнить на сервере 100 команд подряд, просто копипастю копипасту, вызываю CTRL+x+e, вставляю туда свою портянку, сохраняю и иду в кроватку принимать горизонтальные процедуры.

А еще если ввел какую-то длинную команду в консоли и хочешь ее сохранить отдельным скриптом, жмешь хоткей ctrl+x+e и вуаля, открывается редактор и в нем уже вставлена эта команда. Сохраняешь в папке ~/Downloads и забываешь про этот файл навсегда.

Почему не ansible? Хм, можешь и плейбуки написать. Хозяин барин. Но у нас тут про комфортную работу в консоли. Про ansible тоже посты будут, но попозже.

Практично, удобно, всё работает из коробки. А мы с тобой такое любим. Вот такие пироги!

PS: Кстати выйти из vi/vim можно командой :q! Это тебе бонус на всякий случай!

Рекомендую почитать