유닉스에서 mv 명령이 완료될 때까지 기다리는 방법은 무엇입니까?

유닉스에서 mv 명령이 완료될 때까지 기다리는 방법은 무엇입니까?

일부 파일을 압축하고 명령을 사용하여 압축 파일을 다른 디렉터리로 이동한 mv다음 원래 위치에서 모든 파일을 삭제해야 합니다. 그런데 제 경우에는 rm명령이 실행되기 전에 명령이 실행되어 명령이 mv실패했습니다.mv

다음을 시도했지만 도움이 되지 않았습니다.

방법 1:

$ zip -r foo.zip * &;  wait %1 && mv foo.zip mydir &; wait %1 && rm -rf *

방법 2:

[ zip -r foo.zip *] || {mv foo.zip mydir && rm -rf *}

답변1

당신은 일을 복잡하게 만듭니다.

zip종료 시 종료 상태에 성공 또는 실패가 반영되는 경우 간단히 다음을 수행할 수 있습니다.

$ zip -r foo.zip . && mv foo.zip mydir && rm -rf *

그러나 나는 mydir그것이 현재 디렉토리에 있지 않기를 정말로 원합니다. 그렇지 않으면 rm -rf *. 일반적으로 사용할 때 마지막에 다른 것을 추가하기 rm -rf전에 두세 번 생각합니다 ! *! 사실, 나는 rm -rf *작년에 이 일을 한 횟수를 한 손으로 셀 수 있습니다( ). 나는 그것을 대본에 넣지 않을 것입니다.

더 안전한 접근 방식( mydir실제로 현재 디렉터리가 아닌 다른 경로에 대한 경로라고 가정):

$ zip -r --move --test foo.zip . && mv foo.zip mydir

심지어

$ zip -r --move --test mydir/foo.zip .

.대신 (점) 을 사용하십시오 *. 이름이 첫 번째 문자인 모든 *파일은 다음과 같은 이름의 파일을 생성하여 명령줄 전환으로 해석됩니다.-zip--encrypt

$ touch -- --encrypt
$ zip -r --move --test ../test.zip *
Enter password:

$ rm -- --encrypt

관련 정보