Articulo de referencia

banner (Unix)

El programa banner en sistemas operativos Unix y similares genera una versión en ASCII de gran tamaño del texto que se le proporciona como argumentos . Una de las funciones del ...

El programa banner en sistemas operativos Unix y similares genera una versión en ASCII de gran tamaño del texto que se le proporciona como argumentos . Una de las funciones del comando es crear páginas separadoras muy visibles para trabajos de impresión . [ 1 ]

Operación

Cada argumento se trunca a 10 caracteres y se imprime en una "línea" propia. Para imprimir varias palabras en una sola línea, deben pasarse como un único argumento, lo cual se realiza desde el intérprete de comandos escapando o entrecomillando las palabras según corresponda. [ 1 ]

Un programa relacionado y más flexible es FIGlet , que puede mostrar texto en diferentes fuentes y orientaciones. [ 2 ]

Implementación

La implementación interna del programa es anticuada. Las fuentes de caracteres utilizadas están integradas en el código del programa como estructuras de datos inicializadas estáticamente. Se utilizan dos estructuras de datos. La primera es una tabla de datos que contiene una secuencia de instrucciones de impresión que codifican el mapa de bits de cada carácter (en una codificación específica del bannerprograma). La segunda es un índice de dicha tabla que indica, para cada código de carácter, dónde comienzan y terminan las instrucciones de impresión correspondientes. [ 3 ]

Ambas estructuras de datos fueron escritas a mano. Spinellis observa que es "difícil idear un formato de datos más propenso a errores y difícil de mantener". Observa un marcado contraste entre el código fuente del bannerprograma y el código fuente generado automáticamente para codificar fuentes de computadora en datos del programa (utilizando los datos de fuente de 6x10 en el código fuente del puerto mac68k de NetBSD para la comparación). Los datos generados automáticamente están comentados, documentando con arte ASCII cómo se derivaron los patrones de bits. Los datos generados automáticamente se generaron a partir de un archivo de mapa de bits, generado a su vez utilizando un programa de creación/edición de mapas de bits con una interfaz gráfica de usuario. Y los datos generados automáticamente están organizados de manera directa y obvia: una secuencia de longitud fija de bytes sin codificar para cada glifo . [ 3 ]

Spinellis observa además que en los sistemas informáticos modernos rara vez es conveniente incrustar dichos datos en la propia imagen ejecutable del programa, ya que las mejoras de rendimiento que esto conlleva son insignificantes. Hacerlo dificulta la adaptación del programa a diferentes configuraciones regionales o su mantenimiento. El enfoque más recomendable en los sistemas modernos es almacenar dichos datos en un archivo de datos independiente, distinto del archivo de imagen ejecutable del programa, o en una bifurcación de recursos del programa, que este lee en tiempo de ejecución. [ 3 ]

Versiones

Lista parcial de versiones:

  • Por AT&T , en UNIX System V. [ 4 ] [ 5 ] [ 6 ]
  • Desarrollado por Cedar Solutions . Funciona en sistemas Linux modernos (a partir de 2008). Imprime solo horizontalmente con un tamaño fijo.
  • Desarrollado por Mary Ann Horton en la Universidad de California Berkeley, se distribuye como parte del paquete bsdmainutils bajo el nombre printerbanner . Funciona en sistemas Linux modernos, GNU Hurd y Mac OS X (a fecha de 2008). Imprime verticalmente con fuente de tamaño variable.

Ejemplo de salida

Del programa de banners orientados a terminales:

$ banner '¡Hola!' # # ### # # ###### # # #### ### # # # # # # # ### ####### ##### # # # # # # # # # # # # # # # # # # ### # # ###### ###### ###### #### ###

Una letra del programa de banner orientado a la impresora, como el que se suele encontrar en BSD y sus derivados:

$ banner -w80 "a" ##### ######### ############### ### ################ ###### ################## ######## ##### ##### ######### #### #### ## ### ### ### ### ### ### ### ### ### #### #### ############################## ############################### ############################## ############################ ########################### ### # #

Mostrar un reloj continuo durante aproximadamente 1000 segundos: [ a ] ​​[ b ]

$ repetir 1000 sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1)'# ##### # ##### ####### ####### ## # # ## # # # # # # # # # # # # # ###### # ##### ###### ###### # # # ### # # ### # # # # # ### # # # # ##### ##### ### ##### ####### ### ##### #####

Véase también

  • FIGlet : una utilidad de Linux que proporcionaba la misma funcionalidad cuando se seleccionaba la fuente del banner.

Notas

  1. Si el siguiente código no se ejecuta en un intérprete de comandos Zsh , entonces es necesario definir el comando repeat, [ 7 ] como en este código:
    función repetir (){ para (( i = 0 ; i< $1 ; i++ )) ; hacer evaluar ${ *: 2 } }
    o bien, esa definición puede evitarse reemplazando el comando repeat con un bucle while , como este:
    $ i = 0 ; while (( $i < 1000 )) ; do sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1 ; ((i=$i+1)))' ; done
  2. También se puede hacer usando la utilidad FIGlet con la sustitución debannerconfiglet -f banner

Referencias

  1. ^ Steve Moritsugu; Sanjiv Guha; James Edwards; David Pitts (2000). UNIX práctico . Que Editorial. págs. 220–221 . ISBN  0-7897-2250-X.
  2. Arnold Robbins (2006). UNIX en pocas palabras . O'Reilly. 24 págs . ISBN  0-596-10029-9.
  3. 1 2 3 Diomidis Spinellis (2006). Calidad del código . Adobe Press. págs. 70–71 . ISBN  0-321-16607-8.
  4. Hatch (19 de abril de 2004). "System V en AIX y Dynix/ptx" . Archivado del original el 26 de mayo de 2009. Consultado el 23 de julio de 2008 .
  5. "AIX: Documento 157-28-E" (PDF) . zen77087.zen.co.uk .
  6. "Paquete: sysvbanner (1.0.15 y otros)" . Debian . Archivado del original el 20 de diciembre de 2016. Recuperado el 6 de mayo de 2010 .
  7. Frankowski, Jędrzej (8 de mayo de 2020). "Comandos de Linux: repetir un comando n veces" . Archivado del original el 19 de noviembre de 2021. Consultado el 22 de enero de 2022 .

Lecturas adicionales

  • Amir Afzal (2008). «El comando banner». UNIX Unbounded . Prentice Hall. págs. 462–463 . ISBN  0-13-119449-6.