/ usr / bin / status de saída do arquivo sempre 0

1

Estou tentando usar /usr/bin/file para detectar tipos de arquivo em um programa , mas também gostaria que ele informasse se o arquivo não existe. No entanto, o comando sempre retorna o status de saída 0.

Além de mostrar a saída, existe uma maneira de fazer com que /usr/bin/file saia diferente de zero no arquivo não encontrado? Ou há outro comando que tenha esse comportamento?

    
por chakrit 17.03.2016 / 04:03

2 respostas

3

A página man do file no meu fedora, que é semelhante ao centOS, diz explicitamente que os erros do sistema de arquivos não são considerados um erro no status de saída.

No entanto, ele também menciona o -E flag que você pode usar:

On filesystem errors (file not found etc), instead of handling the error as regular output as POSIX mandates and keep going, issue an error message and exit.

    
por 17.03.2016 / 15:33
2

No que diz respeito a outros comandos, o Ruby pode descobrir se existem arquivos:

File.exists?('filename.txt')

Você pode incorporá-lo assim:

if File.exists?(filename)
  # Use the 'file' command
else
  # Handle file not existing
end

Se você fizer isso várias vezes, você pode limpar um pouco as coisas, movendo-as para um método Ruby que lida com tudo isso e retorna o que você quer.

    
por 17.03.2016 / 04:41