I need to paste a multi-line bash code into terminal, but whenever I do, each line gets run as a separate command as soon as it gets pasted.
相关问题
- How to get the return code of a shell script in lu
- Is shmid returned by shmget() unique across proces
- how to get running process information in java?
- JQ: Select when attribute value exists in a bash a
- Invoking Mirth Connect CLI with Powershell script
If you press
C-x C-e
command that will open your default editor which defined.bashrc
, after that you can use all powerful features of your editor. When you save and exit, the lines will wait your enter.If you want to define your editor, just write for Ex.
EDITOR=emacs -nw
orEDITOR=vi
inside of~/.bashrc
Another possibility:
iTerm handles multiple-line command perfectly, it saves multiple-lines command as one command, then we can use
Cmd
+Shift
+;
to navigate the history.Check more iTerm tips at Working effectively with iTerm
Try
Then paste your lines and press Ctrl-D (insert EOF character). All input till Ctrl-D will be redirected to cat's stdout.
I'm really surprised this answer isn't offered here, I was in search of a solution to this question and I think this is the easiest approach, and more flexible/forgiving...
If you'd like to paste multiple lines from a website/test editor/etc, into bash, regardless of whether it's commands per line or a function or entire script...simply start with a
(
and end with a)
and Enter, like in the following example:If I had the following blob
You can paste and verify in a terminal using bash by:
1) Starting with
(
2) Pasting your text, and pressing Enter (to make it pretty)...or not
3) Ending with a
)
and pressing EnterExample:
The pasted text automatically gets continued with a prepending
>
for each line. I've tested with multiple lines with commands per line, functions and entire scripts. Hope this helps others save some time!Add parenthesis around the lines. Example: