Мені потрібно вставити багаторядковий код bash в термінал, але щоразу, коли я це роблю, кожен рядок запускається як окрема команда, як тільки він вставляється.
Відповіді:
Я справді здивований, що ця відповідь тут не пропонується, я шукав рішення цього питання, і я думаю, що це найпростіший підхід і більш гнучкий / прощаючий ...
Якщо ви хочете вставити кілька рядків з веб - сайту / текстового редактора / і ін., В Баш, незалежно від того, є чи команди це на лінії або функції або весь сценарій ... просто почати з (
і закінчуватися )
і Enter, як у наступному прикладі:
Якби я мав наступну крапку
function hello {
echo Hello!
}
hello
Ви можете вставити та перевірити в термінал за допомогою bash, виконавши:
Починаючи з (
Вставлення тексту та натискання клавіші Enter (щоб зробити його гарним) ... чи ні
Закінчуючи )
клавішу a та натискаючи 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
робити), а при збереженні та виході команди виконуються миттєво .
На додаток до зворотної косої риски, якщо рядок закінчується |
або &&
або ||
, він буде продовжений на наступному рядку.
Додайте дужки навколо рядків. Приклад:
$ (
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 буде перенаправлено на кішку.
$ out=$(cat) && eval "$out"
. натисніть Enter після останнього рядка, а потім CTRL + D, як було запропоновано вище.