답변:
-f옵션을 사용하십시오 . 존재하지 않는 파일은 자동으로 무시합니다.
보낸 사람 man rm:
-f, --force
ignore nonexistent files and arguments, never prompt
""프롬프트 없음 "부분은 (a) -f이전에 지정한 -i또는 -I옵션을 무시 하고 (b) 쓰기 방지 된 파일은 묻지 않고 삭제됩니다.]
없으면 -f, rm없는 파일에 대해 불평 할 것이다 :
$ rm nonesuch
rm: cannot remove ‘nonesuch’: No such file or directory
를 사용하면 -f침묵합니다.
$ rm -f nonesuch
$
귀하의 요구 사항은이 경우 rm누락 된 파일에 대해 불평하지 않습니다,하지만 당신은 또한 어떤 것인지 다른 출력을 rm내 제안은 대상 파일의 존재에 대한 첫 번째 테스트하는 것입니다, 단지 전화 rm( 없이-f 파일이 실제로 존재하는 경우 플래그).
# rest of script
# ...
[ -e "$file" ] && rm "$file"
# ...
# rest of script
호출 rm -f예를 들어, 사용자가 쓰기 권한이없는 파일을 제거하는 파일 및 해당 시나리오에 대한 일반 프롬프트를 방출하지.
여러 파일에 동일한 아이디어를 사용하려는 경우 다음과 같은 함수 정의를 작성합니다.
qrm() {
for f
do
[ -e "$f" ] && rm "$f"
done
}
다음과 같이 사용하십시오. qrm file1 file2-does-not-exist *.txt etc here
rm명령을 실행할 때 명령의 다른 출력을 계속보고 싶다고 말 했지만 -f옵션을 사용하면 출력 이 억제됩니다. STDERR을 원하는 것으로 필터링해야합니다. 다른 모든 것을 보여주기를 원한다면 조금 까다 롭습니다.
다음과 같은 명령을 사용하려고합니다.
rm -f filename 3>&1 1>&2 2>&3 3>&- | grep -v 'No such file or directory'
명령 설명 :
-f 주장은 확인이나 오류를 요구하지 않고 강제로 통과하는 것입니다.3>&1 1>&2 2>&3 3>&-필터링을 위해 STDOUT 및 STDERR를 전환하는 것입니다 ( 원하는 경우 여기에서 자세한 내용을 읽을 수 있음)| grep -v 'No such file or directory' 보고 싶지 않은 메시지를 걸러냅니다이제 오류 메시지를 완전히 표시하지 않으려면 다음 명령을 실행할 수 있습니다.
rm filename 2> /dev/null
이 명령은 STDERR을 / dev / null로 경로 재 지정하므로 명령을 실행할 때 표시되지 않습니다.
rm하지 않고 -vstderr 만 사용 하므로이 경우에는 2>&1 | grep더 일반적으로 유용한 춤 없이도 가능합니다.
대안으로, 옵션 find과 함께 명령을 사용할 수 있습니다 -delete. 이렇게하면 찾은 파일 만 삭제되므로 아무것도 없으면 경고하지 않습니다. 예를 들면 다음과 같습니다.
find /var/log/triffids/ -name "*.log" -mtime 30 -delete
/var/log/triffids/디렉토리를 검색하고 .log30 일 이상 수정되지 않은 접미사가있는 모든 파일을 삭제합니다 .
항상 이러한 명령을 실행하는 것이 좋습니다 없이-delete 확인 당신이 기대하는 파일을 찾는 것 만들기 위해, 첫 번째 옵션을.
두 가지 주요 방법이 있습니다. -f 옵션을 추가하면 "존재하지 않음"오류가 표시되지 않고 두 가지 : "명령"대신 "명령어 2> / dev"(대부분의 명령에서 작동)가 표시됩니다. / null ". 여기서"thecommand "는 수행중인 명령입니다.