cat dá erro diferente ao abrir arquivo não existente

22

Os dois comandos a seguir tentam abrir um arquivo não existente foo , mas as mensagens de erro são um pouco diferentes. Qual poderia ser o motivo?

$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory
    
por Zain Rafi 24.11.2016 / 11:56

2 respostas

31

cat foo

Isso executa o comando cat com o argumento foo . O erro impresso na tela depende inteiramente do que foi decidido pelo programador do comando.

cat < foo 

Isso alimenta o conteúdo do arquivo foo com o comando cat usando o Bash redirecionamento de stdin . Se o arquivo não existe, é o Bash que reclama.

    
por 24.11.2016 / 12:06
20

Em $ cat foo o shell (aqui bash) executa o comando cat e passa o parâmetro foo . O programa cat escolhe interpretar esse parâmetro como um nome de arquivo - e tenta abrir o arquivo. O erro que você vê é do programa cat que (naturalmente) não pode abrir o arquivo.

A versão $ cat < foo é um redirecionamento que é tratado pelo shell. < é um operador shell que instrui o shell a abrir um arquivo e redirecioná-lo para stdin. O arquivo não existe, então você recebe um "Nenhum tal arquivo". Desta vez, o erro vem do shell (bash) e parece um pouco diferente.

É por isso que você vê dois erros diferentes. A causa é a mesma - mas é de dois programas diferentes (cat e bash).

    
por 24.11.2016 / 12:08