71 한 줄에 두 개의 별도 명령을 실행하려면 다음과 같이하십시오. cd /home; ls -al 아니면 이거: cd /home && ls -al 그리고 나는 같은 결과를 얻습니다. 그러나이 두 가지 방법으로 백그라운드에서 무슨 일이 일어나고 있습니까? 그들 사이의 기능적 차이점은 무엇입니까? bash — 숀 P 소스
88 는 ;또 다른에서 하나 개의 명령을 분리한다. 는 &&이전이 성공하는 경우에만 다음 명령을 실행 말한다 cd /home; ls -al 이 명령 cd /home은 cd명령이 실패 하더라도 ( /home존재하지 않고 통과 할 수있는 권한이없는 등) 실행 ls -al됩니다. cd /home && ls -al 이것은 성공한 ls -al경우 에만 실행됩니다 cd /home. — 사용자 9517 소스 2 예를 들어 of를 사용하는 ; 것은 정말 위험합니다 (적어도 rm 명령 사용) cd /some/dir; rm -fr ./*. 따라서 그러한 파괴적인 조작으로 rm을 실행하기 전에 올바른 위치에 있는지 확인해야합니다. 올바른 명령은cd /some/dir && rm -fr ./* — ALex_hha
70 a && b 경우 반환 종료 코드를 제로, 다음 B가 실행됩니다. a || b a 가 0이 아닌 종료 코드를 반환 하면 b 가 실행됩니다. a ; b a 가 실행 된 다음 b 가 실행됩니다. — 송민석 소스
16 cd /fakedir; ls -al 실패 ls하므로 현재 디렉토리에서 실행 되며 cd /fakedir쉘은 0이 아닌 종료 상태를 무시합니다. cd /fakedir && ls -al 때문에 &&이전 명령이 정상적으로 (제로의 상태)을 종료하는 경우 운영자만을 계속 어떠한 ls동작이 수행되지 않는다. &프로세스를 배경 으로 하는 다른 연산자 가 있습니다. 종종 명령의 끝에 배치되지만 체인의 중간에 놓을 수 있습니다. — 제프 퍼 랜드 소스
4 if..then..else체인 연결 명령 논리 처럼 함께 결합 할 수도 있습니다 . 예: ls file.ext && echo "file exists" || echo "file does not exist" — Mtl 데브 소스
;
것은 정말 위험합니다 (적어도 rm 명령 사용)cd /some/dir; rm -fr ./*
. 따라서 그러한 파괴적인 조작으로 rm을 실행하기 전에 올바른 위치에 있는지 확인해야합니다. 올바른 명령은cd /some/dir && rm -fr ./*