我正在尝试使用来/usr/bin/file
检测程序中的文件类型但还希望它报告文件是否不存在。但是该命令始终返回退出状态 0。
除了 grep 输出之外,还有没有办法/usr/bin/file
在找不到文件时使退出非零?或者还有其他命令有这种行为吗?
答案1
我的 Fedora 上的手册页file
(与 CentOS 类似)明确指出文件系统错误不被视为退出状态中的错误。
但是,它还提到了-E
您可以使用的标志:
对于文件系统错误(未找到文件等),不是按照 POSIX 要求将错误处理为常规输出并继续,而是发出错误消息并退出。
答案2
至于其他命令,Ruby 可以判断文件是否存在:
File.exists?('filename.txt')
您可以像这样合并它:
if File.exists?(filename)
# Use the `file` command
else
# Handle file not existing
end
如果您多次执行此操作,则可以通过将其移至 Ruby 方法来处理所有内容并返回您想要的内容,从而清理一些内容。