Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз

Тиждень тому Дуглас Макілрой (Douglas McIlroy), розробник конвеєра UNIX та автор поняття «компонентно-орієнтоване програмування», розповів про цікаві та незвичайні UNIX-програми, які не знайшли широкого застосування. Публікація розпочала активне обговорення на Hacker News. Ми зібрали найцікавіше і будемо раді, якщо ви приєднаєтесь до дискусії.

Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз
фото - Virginia Johnson - Unsplash

Робота з текстом

У UNIX-подібних операційних системах є стандартний набір інструментів форматування тексту. Утиліта опечатка дозволяла переглядати документ на наявність друкарських помилок та гапаксів - слів, що зустрічаються в матеріалі лише один раз. Що цікаво, для пошуку друкарських помилок програма не використовує словники. Вона спирається лише на інформацію у файлі та проводить частотний аналіз за триграмами (послідовність із трьох символів). При цьому всі необхідні лічильники зберігаються у масиві 26x26x26. За словами Дугласа Макілроя, такого обсягу пам'яті мало вистачало для кількох однобайтних лічильників. Тому з метою економії їх писали у логарифмічному вигляді.

Сьогодні typo замінили більш сучасні та точні програми перевірки правопису на основі словників. Проте про інструмент все ще пам'ятають — кілька років тому ентузіаст представив реалізацію typo на Go. Репозиторій оновлюється досі.

Ще один інструмент для роботи з документами з 80-х - пакет Writer's Workbench від Лорінди Черрі (Lorinda Cherry) та Ніни Макдональд (Nina McDonald) з Bell Labs. До його складу входили інструменти для визначення частин мови та стилю документа, пошуку тавтологій та надмірно складних пропозицій. Утиліти розробляли як підмогу для студентів, і у свій час їх використовували учні Державного університету Колорадо США. Але на початок дев'яностих про Writer's Workbench забули, тому що його не включили до Version 7 Unix. Однак цей інструмент продовжив дорогу наслідувачам - наприклад, граматика для IBM PC.

У UNIX також є стандартні засоби, що спрощують роботу з формулами. Є препроцесор мови для оформлення математичних виразів екв. Він примітний тим, що для відображення формули розробнику достатньо описати її простими словами та символами. Ключові слова дозволяють зміщувати математичні знаки по вертикалі та горизонталі, змінювати їх розміри та інші параметри. Якщо передати утиліть рядок:

sum from { k = 1 } to N { k sup 2 }

На виході буде згенеровано таку формулу:

Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз

У 1980-1990-х eqn допомагав ІТ-фахівцям писати мануали до програмного забезпечення. Але пізніше його замінила система LaTeX, яку використовує навіть Habr. Але eqn - це перший інструмент такого класу, що залишається частиною UNIX-подібних ОС.

Робота з файлами

У тематичному треді резиденти Hacker News відзначили кілька утиліт, що рідко використовуються, для роботи з файлами. Однією з них було ком для їхнього порівняння. Це спрощений аналог різниця, заточений під роботу у скриптах. Його написав сам Річард Столлман (Richard Stallman) разом із Девідом Маккензі (David MacKenzie).

Виведення програми складається з трьох стовпців. До першої колонки потрапляють значення, унікальні для першого файлу, у другій — унікальні для другого файла. Третій стовпець включає загальні значення. Для коректної роботи comm порівнювані документи мають бути лексично відсортовані. Тому один із резидентів майданчика запропонував працювати з утилітою в наступному вигляді:

comm <(sort fileA.txt) <(sort fileB.txt)

Comm зручно використовуватиме перевірки написання слів. Достатньо порівнювати їх із еталонним документом-словником. Враховуючи тонкощі, пов'язані з необхідністю сортування файлів, є думку, що Столлман та Маккензі написали свою утиліту виключно для цього юзкейсу.

Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз
фото - Marnix Hogendoorn - Unsplash

Також учасник обговорення на HN зазначив можливості оператора вставляти, які були йому неочевидні. Він дозволяє чергувати потоки даних або розділити один потік на дві колонки під час виведення:

$ paste <( echo -e 'foonbar' ) <( echo -e 'baznqux' )
foo     baz
bar     qux
$ echo -e 'foonbarnbaznqux' | paste - -
foo     bar
baz     qux

Один з користувачів помітив, що часто для виконання цих простих операцій застосовують не найоптимальніші рішення: починаючи з fmt, ex і закінчуючи млр с йота и rs.

Які стандартні можливості UNIX-подібних операційних систем стали для вас відкриттям?

Про що ми пишемо в нашому корпоративному блозі:

Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз Як розвивалася система доменних імен: ера ARPANET
Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз Історія системи доменних імен: перші DNS-сервери
Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз Історія DNS: коли доменні імена стали платними
Обговорення: стандартні UNIX-утиліти, які мало хто використовував та використовує зараз Історія системи доменних імен: «війни» протоколів

Джерело: habr.com

Додати коментар або відгук