
다음을 사용하여 /usr/bin/file
프로그램에서 파일 형식을 감지 하려고 합니다.하지만또한 파일이 존재하지 않는 경우 보고하기를 원합니다. 그러나 명령은 항상 종료 상태 0을 반환합니다.
/usr/bin/file
grep 출력 외에도 파일을 찾을 수 없을 때 종료를 0이 아닌 값으로 만드는 방법이 있습니까 ? 아니면 이 동작을 하는 다른 명령이 있습니까?
답변1
내 Fedora(CentOS와 유사)의 매뉴얼 페이지에는 file
파일 시스템 오류가 종료 상태에서 오류로 간주되지 않는다고 명확하게 명시되어 있습니다.
그러나 -E
사용할 수 있는 플래그도 언급되어 있습니다.
파일 시스템 오류(파일을 찾을 수 없음 등)의 경우 오류를 일반 출력으로 처리하고 POSIX에서 요구하는 대로 계속하는 대신 오류 메시지를 내보내고 종료합니다.
답변2
다른 명령과 마찬가지로 Ruby는 파일이 존재하는지 여부를 확인할 수 있습니다.
File.exists?('filename.txt')
다음과 같이 병합할 수 있습니다.
if File.exists?(filename)
# Use the `file` command
else
# Handle file not existing
end
이 작업을 여러 번 수행하는 경우 모든 것을 처리하고 원하는 것을 반환하는 Ruby 메서드로 이동하여 작업을 조금 정리할 수 있습니다.