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