Banner (Unix): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Annullata la modifica 125670376 di IlPoncio (discussione) - il comando è scritto in minuscolo (vedi anche la presenza di titolo minuscolo in cima alla pagina)
Etichetta: Annulla
m WPCleaner v2.05 - redirect che deve rimanere orfano - Università della California, Berkeley
 
(4 versioni intermedie di 4 utenti non mostrate)
Riga 11:
}}
'''banner''' è un comando presente nei [[sistema operativo|sistemi]] [[Unix]] e [[Unix-like]]. Produce una [[ASCII art]] del testo fornito come [[parametro (programmazione)|argomento]].
 
Un utilizzo di questo comando consiste nel creare pagine di separazione ben visibili tra i fogli da stampare.<ref name="PracticalUnix">{{Cita libro|titolo=Practical UNIX|autore=Steve Moritsugu|autore2=Sanjiv Guha|autore3=James Edwards|autore4=David Pitts|url=https://archive.org/details/practicalunix00mori_1/page/220|via=archive.org|editore=Que Publishing|città=Indianapolis|anno=2000|lingua=EN|pp=[https://archive.org/details/practicalunix00mori_1/page/220 220–221]|ISBN=0-7897-2250-X|accesso=26 gennaio 2022}}</ref>
 
== Funzionamento ==
Line 18 ⟶ 19:
 
== Implementazione ==
Il modo in cui il programma viene implementato internamente è antiquato. I font utilizzati sono inseriti nel codice del programma stesso, come strutture di dati inizializzate staticamente. Vengono utilizzate due strutture di dati: la prima è una tabella di dati comprendente una sequenza di istruzioni di stampa che codificano la bitmap per ogni carattere (in una codifica specifica del programma <code>banner</code>) mentre la seconda è un indice che in quella tabella indica, per ogni codice carattere, dove iniziano e finiscono le istruzioni di stampa per quel carattere.<ref name=Spinellis>{{Cita libro|titolo=Code Quality|url=https://archive.org/details/codequalityopens0000spin|autore=Diomidis Spinellis|wkautore=Diomidis Spinellis|editore=Adobe Press|anno=2006|lingua=EN|pp=70–71[https://archive.org/details/codequalityopens0000spin/page/70 70]–71|ISBN=0-321-16607-8}}</ref>
 
Entrambe le strutture dati sono state scritte a mano. Spinellis osserva che è "difficile trovare un formato dati più soggetto a errori e non mantenibile". Egli osserva un netto contrasto tra il codice sorgente del programma <code>banner</code> e il codice sorgente automaticamente generato per codificare i [[font]] nella sezione ''program data'' (usando nel codice sorgente i dati del font 6×10 del [[Porting|port]] mac68k di [[NetBSD]] per confronto). I dati generati automaticamente sono stati generati da un file bitmap, a sua volta generato utilizzando un programma di creazione/modifica [[bitmap]] con un'interfaccia utente grafica. Successivamente essi vengono commentati, documentando con [[ASCII art]] come sono stati derivati i ''[[pattern]]'' di bit. Tali dati sono organizzati in modo semplice ed ovvio: una sequenza di lunghezza fissa di byte non codificati per ogni [[glifo]].<ref name=Spinellis />
Line 29 ⟶ 30:
|accesso=23 luglio 2008|urlarchivio=https://web.archive.org/web/20090526232236/http://www.zen77087.zen.co.uk/nug/alleg/sysv-aix-dynix.shtml |dataarchivio=26 maggio 2009|urlmorto=sì}}</ref><ref>{{cita web|titolo=AIX 7.2: banner Command|url=https://www.ibm.com/docs/en/aix/7.2?topic=b-banner-command|editore=[[IBM]]|lingua=EN|accesso=27 gennaio 2022|urlmorto=no}}</ref> Nei sistemi basati su [[Debian]] il comando ''banner'' è fornito da questa versione nel pacchetto ''sysvbanner''<ref name="debian-package">{{cita web|titolo=Dettagli sul pacchetto ''sysvbanner'' in Debian (v. 1.0.15 o successive)|url=https://packages.debian.org/stable/sysvbanner|editore=[[Debian]]|lingua=EN|accesso=6 maggio 2010|urlarchivio=https://web.archive.org/web/20161220235930/https://packages.debian.org/stable/sysvbanner|dataarchivio=20 dicembre 2016|urlmorto=no}}</ref> e per quest'ultimo, ''banner'' accetta esclusivamente il testo sotto forma di argomento non permettendone l'utilizzo tramite [[pipe (informatica)|pipe]].
* Di [http://cedar-solutions.com/software/utilities.html Cedar Solutions]. Gira su sistemi moderni [[Linux]] a partire dal 2008. Stampa solo orizzontalmente con una dimensione fissa del font.
* Di [[Mary Ann Horton]] all'[[Università della California, - Berkeley]], distribuita come parte del pacchetto [https://packages.debian.org/stable/bsdmainutils bsdmainutils], sotto il nome di <code>printerbanner</code>. Può essere eseguita su versioni moderne di Linux, [[GNU Hurd]], e sistemi [[Mac OS X]] a partire dal 2008. Stampa verticalmente con la possibilità di variare la dimensione del font.
 
== Esempi ==
Line 83 ⟶ 84:
</syntaxhighlight>
 
Mostra un orologio dinamico per circa 1000 secondi:{{#tag:refefn|Se il codice seguente non è eseguito da una shell [[Zsh]] il comando ''repeat'' necessita di essere definito,<ref name=zsh>{{Cita web|url=https://www.baeldung.com/linux/repeat-command|titolo=Linux Commands – Repeat a Command n Times|autore=Jędrzej Frankowski|data=8 maggio 2020|lingua=EN|accesso=22 gennaio 2022|urlarchivio=https://web.archive.org/web/20211119163230/https://www.baeldung.com/linux/repeat-command|dataarchivio=19 novembre 2021|urlmorto=no}}</ref> come in questo frammento di codice:
<syntaxhighlight lang="bash">
function repeat(){
Line 91 ⟶ 92:
</syntaxhighlight>
oppure tale definizione può essere evitata rimpiazzando direttamente il comando ''repeat'' con un [[ciclo while]]:
<syntaxhighlight lang="bash">$ i=0 ; while (($i<1000)); do sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1 ; ((i=$i+1)))' ; done</syntaxhighlight>}} (equivale all'utilizzo dell'utility [[FIGlet]] con la sostituzione di <code>banner</code> con <code>figlet -f banner</code>):
|name=repeat|group=lower-alpha}}<ref group=lower-alpha name="figlet">È equivalente l'utilizzo dell'utility [[FIGlet]] con la sostituzione di <code>banner</code> con <code>figlet -f banner</code></ref>
<syntaxhighlight lang="bash">
$ repeat 1000 sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1)'
Riga 107:
== Note ==
=== Esplicative ===
{{Gruppo di note}}
<references group="lower-alpha" />
 
=== Bibliografiche ===