複数行のbashコードをターミナルに貼り付けて、一度にすべて実行するにはどうすればよいですか?


104

複数行のbashコードをターミナルに貼り付ける必要がありますが、貼り付けるたびに、各行が個別のコマンドとして実行されます。

回答:


107

\コピーする前に、各行の終わりに置いてみてください。


19
注:末尾のスペースはそれを壊します!
Max Reeder

55

この回答がここに提示されていないことに本当に驚いています。この質問の解決策を探していました。これが最も簡単なアプローチであり、より柔軟で寛容だと思います...

ウェブサイト/テキストエディターなどから複数の行をbashに貼り付けたい場合は、それが行ごとのコマンドであるか、関数またはスクリプト全体であるかに関係なく...単にa (で始まり、)のような、と入力します次の例では:

次のブロブがあった場合

function hello {
    echo Hello!
}
hello

次の方法でbashを使用してターミナルに貼り付けて確認できます。

  1. で始まります (

  2. テキストを貼り付けて、Enterキーを押す(見栄えを良くするため)...

  3. a )で終わり、Enterキーを押す

例:

imac:~ home$ ( function hello {
>     echo Hello!
> }
> hello
> )
Hello!
imac:~ home$ 

貼り付けられたテキストは>、各行の先頭に自動的に追加されます。私は複数の行でテストしました。1行あたりのコマンド、関数、スクリプト全体を使用しています。これが他の人の時間の節約に役立つことを願っています!


4
最も簡単な方法IMO
Hobroker 2017年

1
@Toolkitは説明どおりに機能しますが、私が提供したソリューションはより複雑な状況(改行、複数の関数、スクリプト全体など)でも機能します
TryTryAgain

1
これは貼り付けられたコマンドをサブシェルで実行するため、実際には望みどおりに動作しないことがよくあります。括弧の代わりに中括弧を使用して、現在のシェルで実行するように強制できます。しかし、本当に、どちらもしないでください。シェルは対応できます。
tripleee 2018年

33

C-x C-eを定義したデフォルトのエディターを開くコマンドを押すと.bashrc、その後、エディターのすべての強力な機能を使用できます。保存して終了すると、行は入力を待ちます。

エディタを定義したい場合は、Exを記述してください。EDITOR=emacs -nwまたはEDITOR=vi内部~/.bashrc


2
この手法は便利ですが、エディターは同期して(as emacsvidoで)実行する必要があり、コマンドを保存して終了すると即座に実行されます。
mklement0 2017


13

行を括弧で囲みます。例:

$ (
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
)

2
(括弧のように、括弧{は上記の例でも同じように機能することに注意してください
GypsyCosmonaut



4

テキストファイルでコマンドが長く続くのを防ぐために、私は次のように私のcopy-paseスニペットを保持しています。

echo a;\
echo b;\
echo c


0

iTermは複数行のコマンドを完全に処理し、複数行のコマンドを1つのコマンドとして保存します。その後、Cmd+ Shift+ ;を使用して履歴をナビゲートできます。

iTermを効果的に使用する でiTermのヒントを確認する


-1

試す

out=$(cat)

次に、行を貼り付けて、Ctrl-D(EOF文字を挿入)を押します。Ctrl-Dまでのすべての入力は、猫の標準出力にリダイレクトされます。


これを試してください:$ out=$(cat) && eval "$out"。最後の行の後にEnterキーを押し、次に上記のようにCTRL + Dを押します。
Mohamed Bana 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.