Linux принято считать современной операционной системой, однако её фундамент заложили в Bell Labs больше полувека назад. Иерархическая файловая система, многозадачность, конвейеры, переносимый код на языке C и сообщество, привыкшее обходиться без официальной поддержки, – всё это идеи Unix конца 1960-х и 1970-х годов. Статья Денниса Ритчи и Кена Томпсона The Unix Time-Sharing System, опубликованная в июле 1974 года в журнале Communications of the ACM, описала принципы, которые до сих пор определяют устройство любого дистрибутива Linux.
Файловая система без букв дисков
Каталоги в Unix-подобных системах расходятся от корневого каталога / подобно ветвям дерева от ствола. В отличие от DOS и Windows, букв дисков здесь нет: дерево каталогов способно охватывать несколько устройств сразу – жёсткий диск и SSD, USB-накопитель или оптический диск. За счёт этого файловая система остаётся гибкой при любой конфигурации оборудования.

Саму идею иерархической организации файлов раньше проработали в проекте Multics, однако широкое распространение она получила именно вместе с Unix. В статье 1974 года иерархическая файловая система с отключаемыми томами названа в числе возможностей, которые редко встречались даже в куда более крупных операционных системах того времени. Сегодня такая организация каталогов кажется само собой разумеющейся – верный признак того, что решение прижилось.
Многозадачность и управление заданиями
Unix с самого начала позволяла выполнять несколько процессов одновременно, тогда как MS-DOS оставалась однозадачной. Из многозадачности выросло управление заданиями (job control) – механизм, знакомый каждому пользователю терминала Linux.

Длительную задачу можно сразу отправить в фоновый режим, добавив амперсанд в конце строки:
some_long_process &
Оболочка при этом остаётся свободной для следующих команд. Уже запущенный процесс, занимающий терминал, приостанавливается сочетанием Ctrl+Z, после чего команда bg возобновляет его выполнение в фоне:
bg
Управление заданиями появилось в эпоху текстовых терминалов, и с распространением графических сред вроде X11 к нему обращаются реже. Тем не менее при работе в окне терминала механизм по-прежнему экономит время: не нужно открывать отдельную вкладку ради каждой долгой операции.
Конвейеры: вывод одной команды на вход другой
Конвейер – вероятно, самое живучее наследие Unix в Linux. Программы в Unix проектировались так, чтобы их ввод и вывод перенаправлялись средствами оболочки. Вывод команды можно записать в файл – например, сохранить список всех процессов системы:
ps aux > allprocs
Ввод точно так же читается из файла – интерпретатор выполнит команды из готового списка:
sh < command_list.sh
Конвейер (pipeline) – способ соединить несколько программ, при котором вывод одной команды автоматически передаётся на ввод следующей через символ вертикальной черты.
Главная же находка – передача вывода одной команды напрямую на ввод другой. Классический шуточный пример превращает афоризм из fortune в разноцветный текст:
fortune | lolcat

Хрестоматийную демонстрацию подхода устроил Брайан Керниган, соавтор классического учебника по языку C: в рекламном фильме Bell Labs 1982 года он на глазах у зрителя собирает программу проверки орфографии из уже существующих консольных утилит, соединяя их конвейером.
Переносимость благодаря языку C
Сама Unix не была открытым программным обеспечением, однако университетам вместе с системой из Bell Labs зачастую доставался и исходный код. От других операционных систем Unix отличало то, что её ключевые компоненты написали на языке высокого уровня – C, созданном Деннисом Ритчи. Широкую известность языку принесло первое издание книги The C Programming Language Брайана Кернигана и Денниса Ритчи, известное как K&R и вышедшее в 1978 году.
До этого операционные системы писали на языке ассемблера. Программы на ассемблере работают быстро, однако писать их трудоёмко, а результат жёстко привязан к конкретной машине и архитектуре. C – компилируемый язык, поэтому для запуска программы на другой машине в теории достаточно написать компилятор под эту машину.
На практике переносимость оказалась сложнее. Ранние программы на C писали в основном на Unix-машинах, и авторы неосознанно опирались на особенности этой среды – на другой операционной системе такой код не работал. Обходной путь состоял в переносе самой среды: поскольку Unix была написана на языке высокого уровня, для переноса на новую машину достаточно было переписать только машинно-зависимые части.
Сообщество вместо технической поддержки AT&T
Во времена создания Unix компания AT&T, которой принадлежала Bell Labs, действовала в рамках мирового соглашения с властями США 1956 года: в обмен на фактическую монополию на телефонную связь ей запрещалось продавать что-либо, кроме услуг связи. Продавать Unix как коммерческий продукт AT&T не могла, поэтому через дочернюю Western Electric передавала систему университетам и исследовательским лабораториям едва ли не по себестоимости пересылки магнитных лент.
Официальной поддержки при этом не было: исправления и обновления пользователи готовили сами. Так возникли группы пользователей, включая знаменитую USENIX, со временем выросшую в крупную конференцию по информатике. Студенты и аспиранты факультетов информатики оказались вполне готовы к такой самостоятельности – одним из её плодов стала BSD.
BSD (Berkeley Software Distribution) – ветвь Unix, которую с 1978 года развивали в Калифорнийском университете в Беркли; её код лёг в основу современных FreeBSD, NetBSD и OpenBSD.
Традиция взаимопомощи никуда не делась: пользователи Linux и сегодня находят ответы в группах пользователей, на форумах и в тематических сообществах Reddit.
От PDP-7 до старых ноутбуков
Пользователи Linux гордятся тем, что дистрибутивы работают на устаревшем оборудовании, например на старом ноутбуке. Эта традиция тоже восходит к Unix. Кен Томпсон и Деннис Ритчи взялись за систему после того, как Bell Labs в 1969 году вышла из проекта Multics – амбициозной попытки построить то, что сегодня назвали бы облачными вычислениями: вычислительную службу, доступную и надёжную, как электросеть или водопровод.
Проект Multics вышел за рамки бюджета и не уложился в сроки, хотя в 1970-х годах всё же добрался до мейнфреймов. Томпсону и Ритчи досталось куда более скромное оборудование: они раздобыли для работы мини-компьютер PDP-7 производства Digital Equipment Corporation – по нынешним меркам это всё равно что вдохнуть новую жизнь в старый ПК.
Заключение
От иерархического дерева каталогов до переносимого кода на C – Linux продолжает традиции, заложенные в Unix. Конвейеры и управление заданиями по-прежнему экономят время в терминале, а привычка сообщества помогать друг другу заменяет корпоративную поддержку так же, как в 1970-х. Для пользователя это означает простую вещь: навыки работы с Unix-инструментами, освоенные десятилетия назад, остаются актуальными в любом современном дистрибутиве.