/usr/bin/file 退出状态始终为 0

/usr/bin/file 退出状态始终为 0

我正在尝试使用来/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 方法来处理所有内容并返回您想要的内容,从而清理一些内容。

相关内容