Мне нужно вставить многострочный код bash в терминал, но всякий раз, когда я это делаю, каждая строка запускается как отдельная команда, как только она вставляется.
Ответы:
Попробуйте поставить \
в конце каждой строки перед ее копированием.
Пример:
echo "Hello world" && \
script_b.sh
echo $?
Код выхода ( $?
) теперь представляет собой полную последовательность команд, а не только последнюю команду.
Я действительно удивлен, что этого ответа здесь нет, я искал решение этого вопроса и думаю, что это самый простой подход и более гибкий / снисходительный ...
Если вы хотите вставить в bash несколько строк с веб-сайта / текстового редактора и т. Д., Независимо от того, какие это команды на строку, функцию или весь скрипт ... просто начните с (
и закончите)
и Enter, например в следующем примере:
Если бы у меня был следующий капля
function hello {
echo Hello!
}
hello
Вы можете вставить и проверить в терминале с помощью bash:
Начиная с (
Вставка текста и нажатие Enter (чтобы было красиво) ... или нет
Заканчиваем с )
и нажатием Enter
Пример:
imac:~ home$ ( function hello {
> echo Hello!
> }
> hello
> )
Hello!
imac:~ home$
Вставленный текст автоматически продолжается с добавлением >
к каждой строке. Я тестировал несколько строк с командами на строку, функциями и целыми сценариями. Надеюсь, это поможет другим сэкономить время!
Если вы нажмете C-x C-e
команду, которая откроет ваш редактор по умолчанию, который определен .bashrc
, после этого вы сможете использовать все мощные функции вашего редактора. Когда вы сохраните и выйдете, линии будут ждать вашего входа.
Если вы хотите определить свой редактор, просто напишите Ex. EDITOR=emacs -nw
или EDITOR=vi
внутри~/.bashrc
emacs
и vi
do), а при сохранении и выходе команды выполняются мгновенно .
Помимо обратной косой черты, если строка заканчивается на |
или &&
или ||
, она будет продолжена на следующей строке.
Добавьте круглые скобки вокруг линий. Пример:
$ (
sudo apt-get update
dokku apps
dokku ps:stop APP # repeat to shut down each running app
sudo apt-get install -qq -y dokku herokuish sshcommand plugn
dokku ps:rebuildall # rebuilds all applications
)
(
, фигурные скобки {
будут работать так же в приведенном выше примере
Другая возможность:
bash << EOF
echo "Hello"
echo "World"
EOF
iTerm отлично справляется с многострочными командами, он сохраняет многострочные команды как одну команду, затем мы можем использовать Cmd
+ Shift
+ ;
для навигации по истории.
Ознакомьтесь с другими советами iTerm в разделе Эффективная работа с iTerm
Пытаться
out=$(cat)
Затем вставьте свои строки и нажмите Ctrl-D (вставьте символ EOF). Весь ввод до Ctrl-D будет перенаправлен на стандартный вывод cat.
$ out=$(cat) && eval "$out"
. нажмите Enter после последней строки, затем CTRL + D, как предложено выше.