[Linux] 한 줄에 여러 개의 리눅스 명령을 결합하여 실행하십시오.


Answers

이전 명령이 성공한 경우에만 각 명령을 실행하려면 && 연산자를 사용하여 명령을 결합하십시오.

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

명령 중 하나가 실패하면 그 뒤에 오는 다른 모든 명령은 실행되지 않습니다.

이전 명령이 실패했는지 여부에 관계없이 모든 명령을 실행하려면 세미콜론으로 명령을 구분하십시오.

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

귀하의 경우, 나는 다음 명령의 실행이 이전 명령의 성공에 달려있는 첫 번째 경우를 원한다고 생각합니다.

또한 모든 명령을 스크립트에 넣고 대신 실행할 수 있습니다.

#! /bin/sh
cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install

(줄 끝의 백 슬래시는 쉘이 다음 줄이 새로운 명령이라고 생각하지 못하도록하기 때문에 백 슬래시를 생략하면 전체 명령을 한 줄로 작성해야합니다.)

파일 (예 : myscript 저장하고 실행 가능하게 만드십시오.

chmod +x myscript

이제이 스크립트를 컴퓨터의 다른 프로그램처럼 실행할 수 있습니다. 그러나 PATH 환경 변수 (예 : /usr/local/bin 또는 일부 Linux 배포본 ~/bin )에 나열된 디렉토리에 배치하지 않으면 해당 스크립트에 대한 경로를 지정해야합니다. 현재 디렉토리에 있으면 다음과 같이 실행합니다.

./myscript

스크립트의 명령은 첫 번째 예제의 명령과 동일한 방식으로 작동합니다. 다음 명령은 이전 명령이 성공한 경우에만 실행됩니다. 모든 명령을 무조건 실행하려면 각 명령을 자체 행에 나열하십시오.

#! /bin/sh
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
Question

한 줄에 여러 리눅스 명령을 병합하여 배포 작업을 수행하려고합니다. 예를 들어

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install



나는 그것을 사용하여 발견했습니다; 명령을 분리하려면 전경에서만 작동합니다. 예 :

cmd1; cmd2; cmd3 & cmd1; cmd2; cmd3 & - 백그라운드에서 cmd3 만 실행하는 반면 cmd1 && cmd2 && cmd3 & - 오류가없는 경우 백그라운드에서 전체 체인을 실행합니다.

무조건 실행을 처리하려면 괄호를 사용하여 다음을 해결합니다.

(cmd1; cmd2; cmd3) & - 어떤 단계가 실패하더라도 (cmd1; cmd2; cmd3) & - 백그라운드에서 명령 체인을 실행합니다.




이전 명령의 실행 여부와 관계없이 모든 명령을 실행하려면 세미콜론 (;)을 사용하여 명령을 구분할 수 있습니다.

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

이전 명령이 성공한 경우에만 다음 명령을 실행하려면 &&를 사용하여 명령을 분리하십시오.

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

귀하의 경우, 연속 된 명령의 실행은 이전 명령에 의존하는 것으로 보이므로 두 번째 예를 사용하여 &&를 사용하여 명령을 결합하십시오.




한번에 모두 실행하려면 파이프 라인 키 "|"를 사용할 수 있습니다. 이렇게 :

$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install



다음 코드로 사용할 수 있습니다.

cd /my_folder && \
rm *.jar && \
svn co path to repo && \
mvn compile package install

그것은 작동 ...




세미 콜론을 사용하여 명령을 분리 할 수 ​​있습니다.

cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install

그게 무슨 뜻 이었니?




cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install



단 하나의 앰퍼샌드의 유용성은 무엇입니까? 오늘 아침, XFCE 패널 (Manjaro + XFCE)에서 2 개의 암호 관리자를 동시에 실행하기위한 시작 프로그램을 만들었습니다.

sh -c "keepassx && password-gorilla"
or
sh -c "keepassx; password-gorilla"

하지만 원하는대로 작동하지 않습니다. IE는 첫 번째 앱이 시작되지만 이전 앱이 닫힌 경우에만 두 번째 앱이 시작됩니다. - /

그러나, 나는 (단 하나의 앰퍼샌드) 발견 :

sh -c "keepassx & password-gorilla"

내가 원하는대로 작동합니다 ...