«-O» вариант уже был в в sortчасти шестого издания Unix
Однако я согласен с вами, что это не в философии Unix. uniqне было такой опции (и sortне было -uтогда).
На моем PDP-11 я использовал небольшую программу, которая принимала бы один параметр:
renac whatever
Если он whateverуже существует, он будет записывать все, начиная от stdin, во временный файл, который был переименован только whateverпосле того, как ввод stdin иссяк. Таким образом, вы можете направить вывод любой команды renacвместо перенаправления на имя файла без возможности перезаписи ввода. Решение проблемы перезаписи таким образом, IMHO, больше соответствует философии Unix.
Некоторыми более поздними дополнениями к программе были: не перезаписывать выходной файл, если на stdin ничего не поступило (например, из-за неправильного ввода части командной строки), и разрешать добавление stdin в указанный файл.
Это была одна из первых (если не первая) реальных программ на Си, которые я сделал (для своей работы я в основном разрабатывал на Pascal для этой системы).