이전 디렉토리를 삭제하고 새로운 빈 디렉토리를 만드세요

이전 디렉토리를 삭제하고 새로운 빈 디렉토리를 만드세요

단일 bash 명령은 이전에 비어 있지 않았거나 비어 있거나 누락되었는지 여부에 관계없이 >| foo빈 파일을 생성합니다 . foo(읽기 전용이거나 디렉터리인 경우 실패합니다.)

빈 디렉토리를 생성하는 유사한 단일 명령이 있습니까? 해당 디렉토리가 이전에 있었다면 작동할 것입니다.아니면, 비어 있는아니면. rm -rf fooDir; mkdir -p fooDirDon't Repeat Yourself 와 대략 동일 하지만 위반하지 않습니다. (dir이나 파일이 읽기 전용이면 실패해도 괜찮습니다.)

컨텍스트는 출력을 저장할 디렉터리를 만드는 스크립트이지만 이전 실행의 출력은 삭제됩니다.

답변1

나는 대답이 '아니요'라고 믿습니다. 당신이 요구하는 것에 대한 단일 명령은 없습니다.적어도이 두 링크에 따르면 :

내가 말할 수 있는 것은 단지 두 가지 별도의 명령을 사용하는 것뿐입니다. 보기 흉하고 "불편"할 수도 있지만, 이 방법이 유일한 방법일 가능성이 99%입니다.

답변2

먼저, 빈 디렉토리를 찾으세요. 없다만능인그렇게 하는 방법이 있지만 하나를 만들거나 find /var -type d -empty | xargs ls -ltd. 예를 들어 Ubuntu 14에서는 /var/lib/ntpdate수년 동안 비어 있었습니다. 또 다른 안전한 내기는 입니다 /etc/ppp/resolv.

그런 다음 단일 명령은 입니다 rsync -a --delete /var/lib/ntpdate/ fooDir. 후행 슬래시가 중요합니다. 불행하게도 보편적인 솔루션이 없으면 /dev/nullDir이 솔루션은 신규 사용자를 당황하게 할 가능성이 높습니다. 따라서 스크립트가 이 작업을 여러 번 수행해야 하는 경우 먼저 이를 생성한 /tmp/emptyDir다음 rsync와 함께 사용하는 것이 좋습니다 .

관련 정보