Мне нужно вставить многострочный код bash в терминал, но всякий раз, когда я это делаю, каждая строка запускается как отдельная команда, как только она вставляется.
107
Попробуйте поставить \
в конце каждой строки перед ее копированием.
Пример:
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
источник
Чтобы предотвратить появление длинной строки команд в текстовом файле, я сохраняю свои фрагменты кода копирования следующим образом:
echo a;\ echo b;\ echo c
источник
Попробуйте так:
echo $( cmd1 cmd2 ... )
источник
iTerm отлично справляется с многострочными командами, он сохраняет многострочные команды как одну команду, затем мы можем использовать
Cmd
+Shift
+;
для навигации по истории.Ознакомьтесь с другими советами iTerm в разделе Эффективная работа с iTerm
источник
Пытаться
Затем вставьте свои строки и нажмите Ctrl-D (вставьте символ EOF). Весь ввод до Ctrl-D будет перенаправлен на стандартный вывод cat.
источник
$ out=$(cat) && eval "$out"
. нажмите Enter после последней строки, затем CTRL + D, как предложено выше.