Por que “ls foo” produz um arquivo contendo “foo”? [duplicado]

16

Eu removi todos os arquivos em um diretório e, em seguida, executei ls > foo nesse mesmo diretório.

A execução de cat foo revela que o arquivo recém-criado "foo" contém "foo". Por que o arquivo "foo" não está vazio? Quando ls é executado, ainda não há arquivos no diretório, certo?

    
por David Faux 10.06.2012 / 06:26

1 resposta

23

A diretiva de linha de comando > ocorre antes que o comando ls seja executado. O shell tem que estar pronto para salvar a saída que o comando ls pode produzir, portanto, ele deve criar e abrir o arquivo para gravação.

Quando ls é executado pelo shell, o arquivo foo existe e, portanto, ls envia "foo", que é o que você encontrou no arquivo foo .

    
por dan_linder 10.06.2012 / 06:45