A opção '-o' já estava no o sort
da sexta edição do Unix
No entanto, eu concordo com você que não faz parte da filosofia do Unix. uniq
não tinha essa opção (e sort
não tinha uma -u
então).
No meu PDP-11, usei um pequeno programa que usaria um parâmetro:
renac whatever
Se whatever
já existisse, ele escreveria tudo, desde stdin até um arquivo temporário, que só foi renomeado para whatever
depois que a entrada stdin secou. Dessa forma, você pode canalizar a saída de qualquer comando em renac
vez de redirecionar para o nome do arquivo sem a chance de sobrescrever a entrada. Resolver o problema de substituição dessa maneira é IMHO mais compatível com a filosofia do Unix.
Algumas adições posteriores ao programa foram: não sobrescrever o arquivo de saída se nada tivesse chegado ao stdin (por exemplo, resultado de digitação incorreta de parte da linha de comando) e permitir a opção de acrescentar o stdin ao arquivo nomeado.
Este foi um dos primeiros (se não o primeiro) programa C real que eu criei (para o meu trabalho, desenvolvi principalmente em Pascal nesse sistema).