Hace una semana, Douglas McIlroy, desarrollador de la tubería UNIX y autor del concepto de "programación orientada a componentes", habló sobre programas UNIX interesantes y poco comunes que no han tenido una amplia aplicación. La publicación generó un debatido activo en Hacker News. Hemos recopilado lo más interesante y nos encantaría que te unieras a la discusión.
Foto — — Unsplash
Trabajo con texto
En sistemas operativos similares a UNIX, existe un conjunto estándar de herramientas para formatear texto. La utilidad typo permitía revisar documentos en busca de errores tipográficos y — palabras que aparecen en el material solo una vez. Curiosamente, para buscar errores tipográficos, el programa los diccionarios. Se basa únicamente en la información del archivo y realiza un análisis de frecuencia basado en trigramas (una secuencia de tres caracteres). En este sentido, todos los contadores necesarios en un arreglo 26x26x26. Según Douglas McIlroy, tal volumen de memoria apenas era suficiente para algunos contadores de un solo byte. Por lo tanto, por motivos de economía, se escribían en forma logarítmica.
Hoy en día, typo ha sido reemplazado por programas modernos y precisos de verificación ortográfica basados en diccionarios. Sin embargo, el instrumento todavía se recuerda: hace algunos años, un entusiasta implementó typo en Go. El repositorio sigue actualizándose.
Otra herramienta para trabajar con documentos de los 80 es el paquete Writer's Workbench de Lorinda Cherry y Nina McDonald de Bell Labs. Su conjunto herramientas para identificar partes del habla y el estilo del documento, encontrar tautologías y oraciones excesivamente complejas. Las utilidades fueron desarrolladas como apoyo para los estudiantes, y durante un tiempo, los estudiantes de la Universidad Estatal de Colorado en EE. UU. Sin embargo, a principios de los noventa, Writer's Workbench fue olvidado porque no se incluyó en Version 7 Unix. Sin embargo, esta herramienta continuó su camino hacia imitadores, como para IBM PC.
En UNIX también hay herramientas estándar que simplifican el trabajo con fórmulas. Hay un preprocesador de lenguaje para formatear expresiones matemáticas eqn. Es notable porque, para mostrar una fórmula, el desarrollador solo necesita describirla con palabras y símbolos simples. Las palabras clave permiten desplazar las marcas matemáticas vertical y horizontalmente, cambiar sus tamaños y otros parámetros. Si se pasa a la utilidad una cadena:
suma desde { k = 1 } hasta N { k sup 2 }La siguiente fórmula será generada:

En los años 1980–1990 eqn a los especialistas de TI a escribir manuales de software. Pero más tarde fue reemplazada por el sistema LaTeX, que incluso Habr. Pero eqn es la primera herramienta de su clase que sigue siendo parte de sistemas operativos similares a UNIX.
Trabajar con archivos
En un hilo temático, los residentes de Hacker News mencionaron algunas utilidades poco utilizadas para trabajar con archivos. Una de ellas comm para su comparación. Este es un análogo simplificado , diseñado para trabajar en scripts. Su creador, Richard Stallman, junto con David MacKenzie.
La salida del programa consiste en tres columnas. En la primera columna están los valores únicos del primer archivo, en la segunda, los únicos del segundo archivo. La tercera columna incluye los valores comunes. Para que comm funcione correctamente, los documentos a comparar deben estar ordenados léxicamente. Por lo tanto, uno de los residentes del sitio trabajó con la utilidad de la siguiente manera:
comm <(sort fileA.txt) <(sort fileB.txt)Comm es conveniente para verificar la escritura de palabras. Solo es necesario compararlas con un documento de referencia como un diccionario. Teniendo en cuenta las sutilezas relacionadas con la necesidad de ordenar archivos, hay , que Stallman y MacKenzie escribieron su utilidad exclusivamente para este caso de uso.

Foto — — Unsplash
También participante de la discusión en HN las capacidades del operador paste, que no eran obvias para él. Permite alternar flujos de datos o dividir un flujo en dos columnas al imprimir:
$ paste <( echo -e 'foonbar' ) <( echo -e 'baznqux' )
foo baz
bar qux
$ echo -e 'foonbarnbaznqux' | paste - -
foo bar
baz qux
Uno de los usuarios , que a menudo se utilizan soluciones no optimales para realizar estas operaciones simples: comenzando con , y terminando con con y .
¿Cuáles son las capacidades estándar de los sistemas operativos similares a UNIX que fueron un descubrimiento para usted?
Sobre lo que escribimos en nuestro blog corporativo:
![]()
![]()
![]()
![]()
Fuente: habr.com
