Você cria uma condição de corrida. Você inicia dois comandos (em ambos os lados do pipeline) que tentam acessar o mesmo arquivo de maneiras diferentes (leitura vs. apagar). O resultado é o acaso.
cat foo | sort | ( tee foo.new; mv foo.new foo)
Situação : ao usar o seguinte comando:
cat foo | sort | tee foo
onde foo
é um arquivo de texto de várias linhas, o resultado não é consistente. Os dois resultados que observei são:
Pergunta : Por que isso acontece?
P.S. Eu percebo que sort
tem uma opção -o
no meu sistema.
Você cria uma condição de corrida. Você inicia dois comandos (em ambos os lados do pipeline) que tentam acessar o mesmo arquivo de maneiras diferentes (leitura vs. apagar). O resultado é o acaso.
cat foo | sort | ( tee foo.new; mv foo.new foo)