Questa sezione del documento illustra come stampare file, esaminare la coda di stampa, rimuovere file dalla coda di stampa, formattare file prima di stamparli e configurare l'ambiente di stampa.
Il sistema di stampa di Linux ---il sistema lp--- è un porting del codice sorgente scritto dai Regents of the University of California per la distribuzione di UNIX nota come BSD (Berkeley Software Distribution).
La via di gran lunga più semplice di stampare un file sotto Linux è quella di inviare il file
che si intende stampare direttamente alla stampante. Uno dei modi in cui questo può esser
fatto è tramite l'uso del comando cat. Per l'utente root
è possibile eseguire
un comando come il seguente
# cat tesi.txt > /dev/lp
Nel caso in esame /dev/lp
è un link simbolico all'effettivo dispositivo di stampa
- indipendentemente dal suo essere una stampante a matrice di punti, una laser o un plotter
(si veda ln(1) per ulteriori informazioni sui link simbolici).
Per ragioni di sicurezza, solo l'utente root
ed utenti facenti parte dello
stesso gruppo del demone di stampa possono accedere direttamente al dispositivo di stampa.
Per accedere alle stampanti devono quindi essere usati comandi come
lpr, lprm e lpq.
Per questi motivi gli utenti devono usare il comando lpr per stampare un file. Il comando lpr si occupa di tutti i compiti inizialmente necessari nella stampa di un file prima di cedere il controllo al programma lpd, il line printing daemon, che si occuperà di indicare alla stampante come procedere alla effettiva stampa del file.
Quando il comando lpr viene eseguito, procede a copiare il file specificato dall'utente in una directory speciale (directory di spool), ove il file rimarrà sino a quando lpd non abbia completato la sua stampa. Non appena lpd riceve comunicazione dell'esistenza di un file nella coda di stampa, provvede a creare una copia di se stesso (tramite una procedura detta dai programmatori "di forking"). Questa copia del programma provvederà alla stampa del file mentre il processo originario si pone in attesa della prossima richiesta di stampa. Tramite questo sistema è possibile porre più file nella coda di stampa simultaneamente.
La sintassi del comando lpr(1) è una di quelle molto familiari agli utenti:
$ lpr [ opzioni ] [ nomefile ... ]
Se nomefile
non viene specificato lpr assume che l'imput provenga dal file
di standard input stdin (solitamente la tastiera o l'output di un altro programma).
Questo permette agli utenti di reindirizzare l'output di un altro processo direttamente al
programma di stampa, come nell'esempio seguente:
$ cat tesi.txt | lpr
oppure
$ pr -l60 tesi.txt | lpr
Il comando lpr accetta diversi argomenti che permettono all'utente di controllare il suo funzionamento. Tra quelli più spesso usati ricordiamo: -Pstampante indica quale stampante usare, -h sopprime la stampa della burst page, -s crea un link simbolico nella directory di spool invece di procedere a copiarvi il file (particolarmente utile nel caso di file di notevoli dimensioni) e -#num specifica quante copie del file stampare. A titolo di esempio:
$ lpr -#2 -sP dj tesi.txt
Questo comando creerà un link simbolico al file tesi.txt
nella
directory di spool della stampante chiamata dj, dove sarà
processato da lpd, che ne stamperà due copie.
Per una lista esaustiva di tutte le opzioni del comando lpr si rinvia alla manpage lpr(1).
Il comando lpq viene impiegato per visualizzare i contenuti della coda di stampa. Lanciato senza argomenti lpq ritorna i contenuti della coda di stampa della stampante predefinita.
L'output di lpq può tornare utile in molti contesti:
$ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 tesi.txt 682048 bytes
Un'altra utile funzione di un qualsiasi rispettabile sistema di stampa è quella di poter rimuovere file che siano stati precedentemente posti nella coda di stampa. A questo scopo si utilizza il comando lprm:
$ lprm -
Questo comando cancella tutti gli ordini di stampa pendenti appartenenti all'utente che lo ha lanciato. Un singolo file può essere rimosso dalla coda di stampa in due fasi: inizialmente sarà necessario scoprire il suo job number tramite lpq e a quel punto sarà possibile invocare lprm con tale parametro. L'esempio seguente:
$ lprm 31
cancellerebbe il file con job number 31 (tesi.txt
) dalla coda di stampa della stampante predefinita.
Il comando lpc(8) serve a controllare le stampanti gestite da lpd. È possibile abilitare o disabilitare l'uso di una stampante o della sua code di stampa, modificare l'ordine con cui i file sono disposti al loro interno e ottenere un rapporto sullo stato delle stampanti e relative code di stampa. Lpc risulta particolarmente utile in configurazioni in cui una singola macchina disponga di più di una stampante.
$ lpc
Questo comando introduce l'utente in un ambiente interattivo nel quale è possibile inserire comandi. Un'altra possibilità è quella di passare un comando a lpc tramite la linea di comando:
$ lpc status all
Una lista completa dei comandi disponibili può essere ottenuta tramite la manpage di
lpd, ma il lettore troverà di seguito una lista di quelli di maggior rilevanza.
Ogni comando seguito dalla parola opzioni può ricevere sia il nome di una specifica
stampante (ad esempio lp o print) sia la parola chiave all
, usata per indicare il riferirsi
del comando a tutte le stampanti disponibili.
Una breve nota sul sorprendente programma printtool della RedHat: esso sembra possedere tutte le capacità di un magic filter. La distribuzione della RedHat provvede automaticamente ad installare molti dei programmi che eseguono il filtraggio. Seguono i passi seguiti dal sottoscritto per configurare la propria stampante (una HP LJ 4L connessa alla porta parallela) sotto RH 4.0 (tale procedura dovrebbe risultare effettiva anche sotto altre versioni della distribuzione RH).
Esattamente come se gestiste il file /etc/printcap file manualmente, è possibile mantenere più definizioni per ciascuna stampante con differenti dimensioni della carta, risoluzioni o altro.