, 나는 일부 파일을 제거하는 bash는 스크립트가 항상 와일드 카드가 어떤 결과를 반환합니다. 그리고 그 결과로, 나는 항상 존재하는 'foo'조차도 제거하지 못합니다. 작성된 출력은 "rm : No match"입니다.제거 파일 자동 장애 문제 유닉스 환경에서
rm -f foo
rm -f bar*
rm -f baz*
을하지만 나쁜 해결책 :
간단한 해결 방법은 명령을 분할하는 것입니다.
, 나는 일부 파일을 제거하는 bash는 스크립트가 항상 와일드 카드가 어떤 결과를 반환합니다. 그리고 그 결과로, 나는 항상 존재하는 'foo'조차도 제거하지 못합니다. 작성된 출력은 "rm : No match"입니다.제거 파일 자동 장애 문제 유닉스 환경에서
rm -f foo
rm -f bar*
rm -f baz*
을하지만 나쁜 해결책 :
간단한 해결 방법은 명령을 분할하는 것입니다.
아니요. 작동하지 않아야합니다. 어떤 쉘이 사용됩니까? rm
은 내부 버전인가, 외부입니까? 대신 외부 버전을 확인하려면 /bin/rm
을 시도하십시오. 이 경우 명령을 실행하지 못하게하는 쉘 옵션 세트가있을 수 있습니다 (쉘에 따라 다를 수 있음).
나는 tcsh를 사용하고있다. 그리고/bin/rm을 확실히 사용하고 있습니다. 이 셸 옵션은 어디에서 확인할 수 있습니까? – Mugen
좋아, 나는'foo'가 디렉토리 일 때 동일한 메시지를 얻을 수 있었다. 너 사건이야? 'tcsh' glob에 문제가있는 것 같습니다. 다른 쉘을 사용해보십시오. 나는 아직도'tcsh' 옵션을보고있다 ... –
알았습니다! 'nonomatch' 옵션을 사용하십시오. 'set nonomatch'가 작동합니다. 확장을 막기 위해'tcsh '가 사용하는 env 변수입니다.'unmatched' regexp의 경우입니다. –
사용하는 환경이 확실하지 않습니다. 필자의 경우 (Linux/Bash/GNU-tools)에는 잘 작동한다. http://depesz.privatepaste.com/d0b88c536f –
왜 그렇게 나쁠 까? 플러스 귀하의 첫 번째 솔루션은 내 시스템에서 잘 작동 ... 그리고 바 * 또는 바즈가 없다면 오류가 발생합니다, 이것은 예상 된 동작입니다. –
내 환경은 SunOS입니다. 귀하의 정확한 예가 나를 위해 작동하지 않습니다. 모든 파일을 삭제해야하기 때문에 좋지 않습니다. 일부가 처음에는 존재하지 않는다면 중요하지 않습니다. 아마 'rm'에 대한 예상 된 동작 일 것입니다. 그런 다음 간단한 방법으로이 작업을 수행 할 수있는 다른 명령이 있습니까? – Mugen