ProHoster > Блог > Администрирование > Обсуждение: стандартные UNIX-утилиты, которые мало кто использовал и использует сейчас
Обсуждение: стандартные UNIX-утилиты, которые мало кто использовал и использует сейчас
Неделю назад Дуглас Макилрой (Douglas McIlroy), разработчик конвейера UNIX и автор понятия «компонентно-ориентированное программирование», рассказал об интересных и необычных UNIX-программах, не нашедших широкого применения. Публикация запустила активное обсуждение на Hacker News. Мы собрали самое интересное и будем рады, если вы присоединитесь к дискуссии.
В UNIX-подобных операционных системах есть стандартный набор инструментов для форматирования текста. Утилита typo позволяла просматривать документ на наличие опечаток и гапаксов — слов, встречающихся в материале только один раз. Что интересно, для поиска опечаток программа не использует словари. Она опирается только на информацию в файле и проводит частотный анализ по триграммам (последовательность из трех символов). При этом все необходимые счетчики хранятся в массиве 26x26x26. По словам Дугласа Макилроя, такого объема памяти едва хватало для нескольких однобайтных счётчиков. Поэтому в целях экономии их писали в логарифмическом виде.
Сегодня typo заменили более современные и точные программы проверки правописания на основе словарей. Однако про инструмент все еще помнят — несколько лет назад энтузиаст представил реализацию typo на Go. Репозиторий обновляется до сих пор.
Еще один инструмент для работы с документами из 80-х — пакет Writer’s Workbench от Лоринды Черри (Lorinda Cherry) и Нины Макдональд (Nina McDonald) из Bell Labs. В его состав входили инструменты для определения частей речи и стиля документа, поиска тавтологий и излишне сложных предложений. Утилиты разрабатывали в качестве подспорья для студентов, и одно время их использовали учащиеся Государственного университета Колорадо в США. Но к началу девяностых о Writer’s Workbench позабыли, потому что его не включили в Version 7 Unix. Однако этот инструмент продолжил дорогу подражателям — например, Grammatik для IBM PC.
В UNIX также имеются стандартные средства, упрощающие работу с формулами. Есть препроцессор языка для оформления математических выражений eqn. Он примечателен тем, что для отображения формулы разработчику достаточно описать её простыми словами и символами. Ключевые слова позволяют смещать математические знаки по вертикали и горизонтали, менять их размеры и другие параметры. Если передать утилите строку:
sum from { k = 1 } to N { k sup 2 }
На выходе будет сгенерирована следующая формула:
В 1980–1990-х eqn помогал ИТ-специалистам писать мануалы к программному обеспечению. Но позже его заменила система LaTeX, которую использует даже Habr. Но eqn — это первый инструмент подобного класса, остающийся частью UNIX-подобных ОС.
Работа с файлами
В тематическом треде резиденты Hacker News отметили несколько редко используемых утилит для работы с файлами. Одной из них былаcomm для их сравнения. Это — упрощенный аналог diff, заточенный под работу в скриптах. Его написал сам Ричард Столлман (Richard Stallman) вместе с Дэвидом Маккензи (David MacKenzie).
Вывод программы состоит из трех столбцов. В первую колонку попадают значения, уникальные для первого файла, во второй — уникальные для второго файла. Третий столбец включает общие значения. Для корректной работы comm сравниваемые документы должны быть лексически отсортированы. Поэтому один из резидентов площадки предложил работать с утилитой в следующем виде:
comm <(sort fileA.txt) <(sort fileB.txt)
Comm удобно использовать для проверки написания слов. Достаточно сравнивать их с эталонным документом-словарем. Учитывая тонкости, связанные с необходимостью сортировки файлов, есть мнение, что Столлман и Маккензи написали свою утилиту исключительно для этого юзкейса.
Также участник обсуждения на HN отметил возможности оператора paste, которые были для него неочевидны. Он позволяет чередовать потоки данных или разделить один поток на две колонки при выводе:
Один из пользователей заметил, что часто для выполнения этих простых операций применяют не самые оптимальные решения: начиная с fmt, ex и заканчивая mlr с jot и rs.
Какие стандартные возможности UNIX-подобных операционных систем стали открытием для вас?