Discussão: utilitários UNIX padrão que poucos usaram e estão usando atualmente

Há uma semana, Douglas McIlroy, desenvolvedor do pipeline do UNIX e autor do conceito de “programação orientada a componentes”, falou sobre programas UNIX interessantes e incomuns que não eram amplamente utilizados. A publicação lançou uma discussão ativa sobre o Hacker News. Reunimos os mais interessantes e ficaremos felizes se você participar da discussão.


Fotos - Virginia Johnson - Unsplash

Trabalhar com texto


Nos sistemas operacionais do tipo UNIX, há um conjunto padrão de ferramentas para formatar o texto. O utilitário de erros de digitação permitiu visualizar um documento para erros de digitação e hapaks - palavras que aparecem no material apenas uma vez. Curiosamente, o programa não usa dicionários para procurar erros de digitação . Ele se baseia apenas nas informações do arquivo e realiza uma análise de frequência de trigramas (uma sequência de três caracteres). Nesse caso, todos os contadores necessários são armazenados em uma matriz 26x26x26. Segundo Douglas McIlroy, essa quantidade de memória mal era suficiente para vários contadores de byte único. Portanto, para salvá-los, eles foram escritos em uma forma logarítmica.

Hoje, o erro de digitação foi substituído por verificadores ortográficos mais modernos e precisos, baseados em dicionários. No entanto, a ferramenta ainda é lembrada - alguns anos atrás, um entusiasta introduziu a implementação de erros de digitação no Go. O repositório ainda está sendo atualizado.

Outra ferramenta de documentos dos anos 80 é o Writer's Workbench, de Lorinda Cherry, e Nina McDonald, da Bell Labs. Ele incluía ferramentas para determinar partes do estilo do discurso e do documento, buscando tautologias e sentenças excessivamente complexas. Os utilitários foram desenvolvidos como um auxílio aos estudantes e, ao mesmo tempo, foram usadosestudantes da Universidade Estadual do Colorado nos EUA. Porém, no começo dos anos 90, o Writer's Workbench havia sido esquecido porque não estava incluído na Versão 7 Unix. No entanto, essa ferramenta continuou o caminho dos imitadores - por exemplo, Grammatik para IBM PC.

O UNIX também possui ferramentas padrão para simplificar o trabalho com fórmulas. Existe um pré-processador de linguagem para processar expressões matemáticas eqn . Vale ressaltar que, para exibir uma fórmula, basta que o desenvolvedor a descreva em palavras e símbolos simples. As palavras-chave permitem mudar os sinais matemáticos na vertical e na horizontal, alterar seus tamanhos e outros parâmetros. Se você passar a linha para o utilitário:

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

A seguinte fórmula será gerada na saída:

k=1Nk2


Nas décadas de 1980 e 1990, o eqn ajudou os profissionais de TI a escrever manuais de software. Mas depois foi substituído pelo sistema LaTeX, que até a Habr usa . Mas o eqn é a primeira ferramenta dessa classe, permanecendo parte do SO semelhante ao UNIX.

Trabalhar com arquivos


No segmento temático, os moradores do Hacker News observaram vários utilitários raramente usados ​​para trabalhar com arquivos. Um deles foi comm para compará-los. Este é um análogo simplificado de diff , aprimorado para trabalhar em scripts. Foi escrito pelo próprio Richard Stallman com David MacKenzie.

A saída do programa consiste em três colunas. A primeira coluna contém valores exclusivos para o primeiro arquivo, a segunda - exclusiva para o segundo arquivo. A terceira coluna inclui valores gerais. Para que a comunicação funcione corretamente, os documentos a serem comparados devem ser classificados lexicamente. Portanto, um dos residentes do site sugeriu trabalhar com o utilitário da seguinte forma:

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

Comm é útil para verificar a ortografia das palavras. Basta compará-los com o documento do dicionário de referência. Dadas as sutilezas associadas à necessidade de classificar arquivos, acredita - se que Stallman e Mackenzie tenham escrito sua utilidade exclusivamente para este caso de usuário.


Foto - Marnix Hogendoorn - Unsplash

Além disso, um participante da discussão no HN observou as capacidades do operador de colar , que não eram óbvias para ele. Permite alternar fluxos de dados ou dividir um fluxo em duas colunas durante a saída:

$ paste <( echo -e 'foo\nbar' ) <( echo -e 'baz\nqux' )
foo     baz
bar     qux
$ echo -e 'foo\nbar\nbaz\nqux' | paste - -
foo     bar
baz     qux

Um usuário observou que, muitas vezes, essas não são as soluções mais ideais para uso: começando com fmt , ex e terminando com mlr com jot e rs .

Quais recursos padrão dos sistemas operacionais do tipo UNIX foram sua descoberta?

Sobre o que escrevemos em nosso blog corporativo:

Como o sistema de nomes de domínio foi desenvolvido: ARPANET Era
Histórico do sistema de nomes de domínio: Primeiros servidores
DNS Histórico do DNS: quando os nomes de domínio se tornaram pagos
Histórico do sistema de nomes de domínio: protocolos "Guerra"

All Articles