배포 작업을 수행하기 위해 여러 Linux 명령을 한 줄로 병합하려고합니다. 예를 들어
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
귀하의 경우 다음 명령의 실행이 이전 명령의 성공에 달려있는 첫 번째 경우를 원한다고 생각합니다.
모든 명령을 스크립트에 넣고 대신 실행할 수도 있습니다.
#! /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
답변
;를 사용하여 발견했습니다. 명령을 분리하는 것은 포 그라운드에서만 작동합니다. 예 :
cmd1; cmd2; cmd3 &
– 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
답변
단 하나의 앰퍼샌드의 유틸리티는 무엇입니까? 오늘 아침, XFCE 패널 (Manjaro + XFCE)에서 2 개의 암호 관리자를 동시에 시작하기 위해 런처를 만들었습니다.
sh -c "keepassx && password-gorilla"
or
sh -c "keepassx; password-gorilla"
그러나 원하는대로 작동하지 않습니다. IE, 첫 번째 앱은 시작하지만 두 번째 앱은 이전 앱이 닫힐 때만 시작됩니다
그러나 (단 하나의 앰퍼샌드로)
sh -c "keepassx & password-gorilla"
그리고 내가 원하는대로 작동합니다 …