Утилиты Unix/Linux

Linux славится своим развитым командным процессором, позволяющим администратору, имеющему минимальное знакомство с принципами программирования, решать задачи, которые при ином подходе требовали бы длительного кодирования. Речь идёт об утилитах командной строки: каждая из них способна совершать какую-либо элементарную операцию, однако возможность их произвольного комбинирования позволяет легко достигать практически любого результата. Например, быстрая замена подстроки в файлах, удовлетворяющих некоторому условию поиска как по имени, так и по содержимому, из графического интерфейса весьма затруднительна. То же относится к подсчёту строк, соответствующих заданному шаблону, в подмножестве файлов, к выполнению некоторой обработки над файлами, список которых был получен в результате работы другой команды, и так далее.

Всем этим великолепием мы обязаны грамотному проектному решению, провозгласившему, что все подобные утилиты имеют входные и выходные данные, и что выход одной программы может легко превращаться во вход другой. В результате текстовые операции выполняются в такой системе проще, чем где бы то ни было.

К сожалению, авторы данной инициативы не пошли дальше разработки универсального командного интерфейса. Возможно, подобный подход к разработке взаимодействия программ в иных областях, не ограниченных консольным вводом-выводом, привёл бы к решению львиной доли проблем совместимости, о которых писалось выше.