/usr/bin/file 終了状態は常に 0 です。

/usr/bin/file 終了状態は常に 0 です。

以下を使用して、プログラムが/usr/bin/fileファイルの種類を検出しようとします。しかし、また、ファイルが存在しない場合は報告したいと思います。ただし、コマンドは常に終了ステータス0を返します。

/usr/bin/filegrep出力に加えて、ファイルが見つからないときにシャットダウンをゼロ以外の値にする方法はありますか?それともこの動作をする他のコマンドはありますか?

答え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メソッドに移動して、作業を少し整理できます。

関連情報