programing

여러 줄의 bash 코드를 단말기에 붙여넣고 한 번에 실행하려면 어떻게 해야 하나요?

abcjava 2023. 4. 11. 21:35
반응형

여러 줄의 bash 코드를 단말기에 붙여넣고 한 번에 실행하려면 어떻게 해야 하나요?

여러 줄의 bash 코드를 단말기에 붙여 넣어야 하는데, 붙여 넣을 때마다 각 행이 별도의 명령어로 실행됩니다.

퍼트해 보다\복사하기 전에 각 줄의 끝에 있습니다.

예:

echo "Hello world" && \
script_b.sh

echo $?

종료 코드($?)는 마지막 명령어뿐만 아니라 완전한 명령어시퀀스입니다

이 답변이 여기에 없는 것이 매우 놀랍습니다.저는 이 질문에 대한 해결책을 찾고 있었습니다.이것이 가장 쉬운 접근법이라고 생각합니다.또한 보다 유연하고 포기합니다.

웹 사이트/텍스트 에디터 등에서 여러 줄을 bash에 붙여넣고 싶다면 한 줄당 명령어인지 함수인지 스크립트 전체인지에 관계없이...간단하게 시작하다(마지막으로 a로 끝납니다.)다음 예시와 같이 를 입력합니다.

만약 나에게 다음과 같은 blob이 있다면

function hello {
    echo Hello!
}
hello

bash를 사용하여 단말기에 붙여넣고 확인할 수 있는 방법은 다음과 같습니다.

  1. 처음에(

  2. 텍스트를 붙여넣고 Enter(예쁘게 하려면)를 누릅니다.그렇지 않으면.

  3. 끝은 a로 끝납니다.)Enter 키를 누릅니다.

예:

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

붙여넣은 텍스트는 자동으로 프리펜딩과 함께 계속됩니다.>각 회선마다.한 줄당 명령어, 함수 및 스크립트 전체를 사용하여 여러 줄에서 테스트했습니다.이것이 다른 사람들이 시간을 절약하는 데 도움이 되길 바랍니다!

를 누르면C-x C-e정의한 기본 에디터를 여는 명령어.bashrc그 후 편집기의 모든 강력한 기능을 사용할 수 있습니다.저장 후 종료하면 회선이 입력을 기다립니다.

편집기를 정의하려면 Ex에 씁니다. EDITOR=emacs -nw또는EDITOR=vi의 내부에~/.bashrc

또 다른 가능성:

bash << EOF
echo "Hello"
echo "World"
EOF

백슬래시에 가세해, 행이 다음과 같이 끝나는 경우.|또는&&또는||다음 줄에 이어집니다.

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

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

텍스트 파일에 명령어가 길게 나열되지 않도록 복사 페이지 스니펫을 다음과 같이 보관합니다.

echo a;\
echo b;\
echo c

iTerm은 여러 줄의 명령어를 완벽하게 처리하며 여러 줄의 명령어를 하나의 명령어로 저장하여 사용할 수 있습니다.Cmd+Shift+;이력을 탐색합니다.

iTerm을 효과적으로 사용하는 방법에 대한 추가 iTerm 힌트를 확인하십시오.

아무도 이런 말을 하지 않은 것이 놀랍지만, 편집기에 모든 명령어를 붙여넣고 한 번에 실행할 수 있습니다.

따라서 매우 긴 명령어(즉, llvm! 파일을 컴파일하는 것)로 인해 이전에 시도했던 명령어보다 훨씬 쉬워졌습니다.에디터의 명령어를 여러 줄에 걸쳐서 쓸어 담기 위해 항상 사용합니다.

cat | paste -sd " "  - | xargs echo

이렇게 하면 단말기에 cat 표준 입력이 열리고 코드에 붙여넣은 후 ctrl-d로 후속 조치가 이루어집니다(이렇게 하면 EOF 문자가 추가되고 CAT 프로세스가 종료됩니다).붙여넣기는 cat 입력을 받아들여 모든 다중 행을 공백 문자로 표시합니다.그러면 명령어만 에코아웃됩니다.

명령어를 실행하려면 마지막에 sh를 추가합니다.

cat | paste -sd " "  - | xargs echo | sh

또는 출력을 alias 명령으로 하고 .zshrc에 넣습니다.

alias mcmd='cat | paste -sd " "  - | xargs echo'

실행하다

> mcmd | sh

cat을 열고 여러 줄 명령어를 붙여넣고 ctrl d를 사용하여 여러 줄을 한 줄 명령어로 실행합니다.

명령어 예시

>    mcmd;
# now paste in your long command
> llvm-g++
    main.mm
    -o
    buildApp
    -w
    -g
    -std=c++14
    -L/System/Library/Frameworks/
    -framework
    CoreServices
     # now key press ctrl + d

헉! 출력

 llvm-g++ main.mm -o buildApp -w -g -std=c++14 -L/System/Library/Frameworks/ -framework CoreServices

다음과 같이 시도해 보십시오.

echo $( 
    cmd1
    cmd2
    ...
)

해라

out=$(cat)

그런 다음 행을 붙여넣고 Ctrl+D(EOF 문자 삽입)를 누릅니다.Ctrl+D까지의 모든 입력은 cat의 stdout으로 리다이렉트 됩니다.

있다vi내 셸에 설정된 키 바인딩입니다.이 설정을 어떻게 했는지 즉석에서 기억나지 않습니다.는 편집 모드로 할 수 .v and and and 。vim종료중(종료중):wq를 ( )에 합니다.bash실행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6713056/how-do-i-paste-multi-line-bash-codes-into-terminal-and-run-it-all-at-once

반응형