Quando o shell obtém uma linha de comando como: command > file.out
o próprio shell abre (e talvez cria) o arquivo chamado file.out
. O shell configura o descritor de arquivo 0 para o descritor de arquivo que obteve do campo aberto. É assim que funciona o redirecionamento de E / S: todo processo conhece os descritores de arquivo 0, 1 e 2.
A parte difícil disso é como abrir file.out
. Na maioria das vezes, você deseja que file.out
seja aberto para gravação no deslocamento 0 (isto é, truncado) e isso é o que o shell fez por você. Ele truncou .hgignore, abriu-o para escrever, digitou o filedescriptor para 0 e depois executou head
. Espancamento instantâneo de arquivos.
No bash shell, você faz um set noclobber
para alterar esse comportamento.