A opção '-o' já estava no o sortda sexta edição do Unix
No entanto, eu concordo com você que não faz parte da filosofia do Unix. uniqnão tinha essa opção (e sortnão tinha uma -uentão).
No meu PDP-11, usei um pequeno programa que usaria um parâmetro:
renac whatever
Se whateverjá existisse, ele escreveria tudo, desde stdin até um arquivo temporário, que só foi renomeado para whateverdepois que a entrada stdin secou. Dessa forma, você pode canalizar a saída de qualquer comando em renacvez 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).