Stampare sotto Linux da terminale

Una delle cose belle da fare in Linux è stampare da terminale per questo ci viene in aiuto il comando "lp"

Informazioni prese da: http://www.science.unitn.it/~fiorella/linux/Printing-Usage-HOWTO-2.html

 

Il sistema di stampa in Linux inizialmente è un port del codice sorgente scritto dalla Regents of the University of California per la versione della Distribuzione Software di Berkeley (creatore di BSD UNIX) del sistema operativo Linux e arricchito del CUPS di Apple.

 

Dunque ci troviamo davanti ad un vero e competo sistema di stampa anche manovrabile da terminale!

La maniera più semplice di stampare sotto il sistema operativo Linux è mandare il file che deve essere stampato direttamente al device (dispositivo) di stampa. Un modo per fare ciò è quello di usare il comando cat. Se si è l'utente root, si può fare qualcosa del tipo

# cat thesis.txt > /dev/lp

Nota: A causa delle esigenze di sicurezza, solamente l'utente root e gli utenti nello stesso gruppo del demone di stampa (il print daemon) "lp", sono in grado di scrivere direttamente al dispositivo di stampa, se si usa Linux da soli (uso domestico) si può aggiungere questo al proprio utente il gruppo "lp".

Attenzione, in questo caso, /dev/lp è un link simbolico al dispositivo attuale di stampa, ovvero dietro può essere collegata qualsiasi tipo di stampante.

 

La raccomandazione è che però bisogna usare comandi del tipo lpr, lprm, e lpq per stampare un file come utente. Il comando lpr è responsabile del prendersi cura di tutto il lavoro iniziale necessario a stampare il file, e dopo passa la palla ad un altro programma, lpd, il vero demone della stampa.

Quando lpr viene eseguito, prima copia il file specificato in una certa directory (la directory di spool), dove il file rimane fino a che lpd lo stampa. Una volta che a lpd viene comunicato che esiste un file da stampare, questo manda in esecuzione una copia di se stesso (che è quello che i programmatori chiamano forking). Questa copia stamperà il file, mentre la copia originale rimarrà in attesa per ulteriori richieste. Questo permette che lavori multipli (stampe multiple dello stesso) possano essere accodati in una volta sola.

-Sintassi esempi

La sintassi di lpr è molto familiare,

$ lpr [ options ] [ filename ... ]

Se un filename non viene specificato, lpr assume che l'input debba pervenire dallo standard input (di solito la tastiera, oppure l'output di un altro programma). Questo permette all'utente di ridirezionare l'output di un comando al dispositivo di stampa, ad esempio

$ cat thesis.txt | lpr

oppure qualcosa di più avanzato, come

$ pr -l60 thesis.txt | lpr

Il comando lpr accetta molti argomenti nella linea di comando, che permettono ad un utente di controllare il suo modo di lavorare. Alcuni degli argomenti più ampiamente usati sono:

-l  ​​ ​​​​ Specifica che il file di stampa è già formattato per la ​​ destinazione e deve essere inviato senza filtro.

-Pprinter che specifica la stampante da usare.

-h sopprime la stampa della pagina burst (intestazione).

-s crea un link simbolico invece di copiare l'intero file alla directory di spool (il che è utile per file di grosse dimensioni dato che rimane uno solo).

-#num specifica il numero delle copie da stampare. Un esempio di interazione con lpr può essere qualcosa del tipo

$ lpr -#2 -sP dj thesis.txt

Qualche volta è utile sapere quali lavori sono attualmente in una particolare coda di stampa (stampe in attesa). Questo è l'unico scopo del comando lpq.

Per vedere che cosa c'è nella coda della stampante di default (come stabilito in /etc/printcap), si usi

$ lpq

lp is ready and printing

Rank  ​​​​ Owner  ​​ ​​ ​​ ​​​​ Job ​​ Files  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Total Size

active mwf  ​​ ​​ ​​ ​​ ​​ ​​​​ 31  ​​​​ thesis.txt  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 682048 bytes

lprm invece invece cancella le stampe in attesa, esempio:

lprm 31

Cancellerà il "job" (stampa in attesa) numero 31, che nell'esempio è "thesis.txt"

Mentre

lprm -

cancellerà tutte le stampe in attesa, ma solo di quel utente, per altre bisogna specificare il "job".

Ruolo di CUPS

Bello ma chi gestisce i driver di quella stampante? Il CUPS, che fa da "filtro" ad ogni invio di stampa (è integrato), e che si può gestire con un browser da

http://localhost:631/admin

o

http://192.168.1.4:631/admin

​​ Dato che CUPS viene migliorato continuamente vi lascio alle guide ufficiali di CUPS

https://www.cups.org/

o in Italiano e più facile

https://wiki.archlinux.org/index.php/CUPS_(Italiano)

Dove potete vedere che da terminale di modificare via script le sue configurazioni.

CUPS può fare anche altro:

-Controllare via riga di comando il CUPS

CUPS può essere interamente controllato via riga di comando.

Lista dei devices

# lpinfo -v

Lista dei driver

# lpinfo -m

Aggiungere una nuova stampante

# lpadmin -p <printer> -E -v <device> -P <ppd>

<printer> è il nome e lo sceglie l'utente. <device> lo si trova con il comando 'lpinfo -i'. Esempio:

# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" ​​ -P /usr/share/ppd/HP/hp-deskjet_940c.ppd.gz

Nell'esempio seguente, <printer> è il nome scelto in precedenza.

Imposta <printer> come predefinita

$ lpoptions -d <printer>

Controlla lo status della stampante

$ lpstat -s

$ lpstat -p <printer>

Disattiva una stampante

# cupsdisable <printer>

Attiva una stampante

# cupsenable <printer>

Rimuove una stampante

Rigetta ogni nuova richiesta di lavoro:

# cupsreject <printer>

Disabilita la stampante:

# cupsdisable <printer>

Rimuove la stampante:

# lpadmin -x <printer>

Stampa un file

$ lpr <file>

$ lpr -# 17 <file>  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ # stampa il file 17 volte

$ echo "Hello, world!" | lpr -p # stampa l'output del comando. Lo switch -p aggiunge l'header.

Controlla la coda di stampa

$ lpq

$ lpq -a # tutte le stampe

Cancella la coda di stampa

# lprm  ​​​​ # rimuove l'ultima entrata dell'utente

# lprm - # rimuove tutte dell'utente

Altre possibilità

-Stampante virtuale PDF

 

cups-pdf è un pacchetto interessante, che permette all'utente di impostare una stampante virtuale, la quale genera PDF da qualsiasi dato le venga inviato. Ovviamente questo pacchetto non è strettamente necessario, ma può rivelarsi discretamente utile.

Dopo l'installazione settare la stampante dalla "web interface" di CUPS: http://localhost:631/ e selezionare:

Administration -> Add Printer

Select CUPS-PDF (Virtual PDF), choose for the make and ​​ driver:

Make:  ​​​​ Generic

Driver: Generic CUPS-PDF Printer

I documenti PDF generati si vanno ad allocare in una sotto-cartella di

​​ /var/spool/cups-pdf

​​ Generalmente, la sotto-cartella porta il nome dell'utente che ha richiesto la creazione dei documenti.

 

-Yast

Spesso si rivela troppo complicata la gestione di CUPS, in questo caso, per i fortunati possessore di SUSE, ​​ interviene Yast -> Stampanti, ​​ che con procedure guidate vi semplifica il tutto.

Il bello è che Yast funziona anche da riga di comando in modo grafico!

-Altre interfacce grafiche

Sia KDE che Gnome che altri Desktop hanno tools (in impostazioni) per semplificare la gestione della stampante, ma spesso, come nel caso delle stampanti HP con il programma Hplip, oramai quasi tutte le stampanti di qualità hanno una sua interfaccia grafica su Linux.

Ciaooooooooooooooooooo

 

 

 

Precedente Asbru-cm