여러 줄의 bash 코드를 터미널에 붙여넣고 한 번에 실행하려면 어떻게해야합니까?


106

여러 줄로 된 bash 코드를 터미널에 붙여 넣어야하지만 그렇게 할 때마다 각 줄은 붙여 넣는 즉시 별도의 명령으로 실행됩니다.

답변:


110

\복사하기 전에 각 줄의 끝에 넣어보십시오 .

예:

echo "Hello world" && \
script_b.sh

echo $?

종료 코드 ( $?)는 이제 마지막 명령이 아닌 전체 명령 시퀀스입니다.


21
참고 : 후행 공백으로 인해 중단됩니다!
Max Reeder

54

나는이 대답이 여기에 제공되지 않는다는 것에 정말 놀랐습니다.이 질문에 대한 해결책을 찾고 있었으며 이것이 가장 쉬운 접근 방식이며 더 유연하고 관용적이라고 생각합니다 ...

웹 사이트 / 텍스트 편집기 등의 여러 줄을 bash에 붙여 넣으려면 한 줄당 명령이든 함수이든 전체 스크립트이든 상관없이 ... a로 시작 (하고 a )와 Enter로 끝내기 만하면됩니다. 다음 예에서 :

다음 blob이있는 경우

function hello {
    echo Hello!
}
hello

bash를 사용하여 터미널에 붙여넣고 확인할 수 있습니다.

  1. 로 시작 (

  2. 텍스트를 붙여넣고 Enter 키를 눌러 (예쁘게 만들기 위해) ...

  3. a로 끝나고 )Enter 키를 누릅니다.

예:

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

붙여 넣은 텍스트는 자동으로 >각 줄 의 앞에 추가 됩니다. 한 줄, 함수 및 전체 스크립트를 사용하여 여러 줄로 테스트했습니다. 이것이 다른 사람들이 시간을 절약하는 데 도움이되기를 바랍니다!


4
쉬운 방법 IMO
Hobroker

1
당신이 설명한대로 간단한 것들에 대한 @Toolkit 그것은 작동하지만 내가 제공 한 솔루션은 더 복잡한 상황 (줄 바꿈, 다양한 기능, 전체 스크립트 등) 작동합니다
TryTryAgain

1
이것은 서브 쉘에 붙여 넣은 명령을 실행하므로 실제로 원하는 작업을 수행하지 않는 경우가 많습니다. 괄호 대신 중괄호를 사용하여 현재 셸에서 실행되도록 할 수 있습니다. 하지만 정말로, 둘 다하지 마십시오. 쉘이 대응할 수 있습니다.
tripleee

33

C-x C-e명령을 누르면 정의 된 기본 편집기가 열립니다..bashrc 모든 강력한 기능을 사용할 수 있습니다. 저장하고 종료하면 라인이 입력을 기다립니다.

편집기를 정의하려면 Ex로 작성하십시오. EDITOR=emacs -nw또는 EDITOR=vi내부~/.bashrc


2
이 기술은 유용하지만 편집기는 동기식 ( 동기식emacs 및 실행)으로 실행되어야 vi하며 저장 및 종료시 명령이 즉시 실행 됩니다.
mklement0

16

백 슬래시 외에도 줄이 |또는 &&또는로 끝나는 경우 ||다음 줄에서 계속됩니다.


12

줄 주위에 괄호를 추가합니다. 예:

$ (
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
마 노트, paranthesis처럼 (괄호는 {또한 위의 예에서 동일하게 작동합니다
GypsyCosmonaut



4

텍스트 파일에서 긴 줄의 명령을 방지하기 위해 다음과 같이 copy-pase 스 니펫을 유지합니다.

echo a;\
echo b;\
echo c

0

이 방법을 시도하십시오.

echo $( 
    cmd1
    cmd2
    ...
)

0

iTerm은 여러 줄 명령을 완벽하게 처리하고 여러 줄 명령을 하나의 명령으로 저장 한 다음 Cmd+ Shift+를 사용할 수 있습니다.; 를 사용하여 기록을 탐색 .

iTerm을 사용한 효과적인 작업 에서 더 많은 iTerm 팁을 확인하십시오.


-1

시험

out=$(cat)

그런 다음 줄을 붙여넣고 Ctrl-D (EOF 문자 삽입)를 누릅니다. Ctrl-D까지의 모든 입력은 cat 's stdout으로 리디렉션됩니다.


이것을 시도하십시오 : $ out=$(cat) && eval "$out". 마지막 줄 뒤에 Enter 키를 누른 다음 위에서 제안한대로 CTRL + D를 누르십시오.
모하메드 바나
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.