목표가 다음과 같은 한 줄 명령을 실행하는 것입니다.
- 디렉토리
~/Desktop/foo가 이미 있으면 제거하고 다시 작성 합니다.
- 디렉토리가
~/Desktop/foo없으면 작성하십시오 .
그런 다음 다음을 사용할 수 있습니다.
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
; 개행과 동일하지만 한 줄에서 여러 명령을 실행할 수 있습니다 (예 : "단일 명령").
- 제거하는 디렉토리에 읽기 전용 파일이 포함되어
-f있으면 대화식으로 사용자에게 프롬프트하지 않고 제거 할 플래그가 필요합니다 . 괜찮습니다.하지만 특히주의해야 rm -rf ...합니다. 자세한 내용 man rm을 참조하십시오.
- 당신이 필요로
rm하는 명령을 완료 전과 mkdir명령이 실행을; 이것이 ;대신 사용하는 이유 입니다 &. (앞의 명령 &은 백그라운드에서 비동기 적으로 실행됩니다.)
- 명령이 성공하면
mkdir명령을 실행 해야 rm합니다. 이것이 ;대신 사용하는 이유 입니다|| .
- 명령이 실패하면
mkdir명령을 실행 해야 rm합니다 (일반적으로 실패하면 디렉토리가 이미 존재하지 않음을 의미 함). 이것이 ;대신 사용하는 이유 입니다 &&.
rm디렉토리가 이미있는 경우에, 존재하는 경우 명령도 실패 할 수 있습니다 mkdir명령은 실패합니다,하지만 오류 메시지가 이해하고 위해 중간 단계의 검사를 추가 할 필요 아마 없다 foo그것을 만들려고하기 전에의 존재.
참조 명령 3.2.3 목록 에서 배쉬 참조 설명서를 에 대한 자세한 내용과 설명은 ;, &, ||, 및 &&운영.
으로 muru 제안 (그리고 Rinzwind이 정교 ), 나는 당신이 들여다 권장합니까rsync 그것은 당신의 백업 요구를 충족되는지 확인. 이 우분투 rsync 안내서 뿐만 아니라 rsync 문서 페이지 에 유용한 추가 안내서가 있습니다.
mkdir에이 옵션이없는 이유는 무엇입니까?
mkdir디렉토리를 작성합니다 ( "mk" 는 "make"를 나타냄). 또한 재귀 적으로 디렉토리를 삭제하면 디렉토리의 모든 파일이 나빠질 수 있습니다. 데이터 손실로 이어질 수있는 가장 놀라운 원리를 위반하기 때문입니다 .
rmdir디렉토리가 아닌 파일이 들어있는 디렉토리조차 제거하지 않습니다. rm는 파일을 제거 할 것으로 예상 -r되므로 옵션이 있습니다. 즉, rm그 목적으로 인해 고유 한 위험이 직관적이며 사용자는 일반적으로 rm명령을 실행할 때주의해야합니다 .
foo모든 내용을 삭제하는 것처럼 교체 하시겠습니까? 디렉토리가 존재하는지 무시mkdir하는-p옵션이 있습니다.