Come elencare i nomi delle stampanti accettabili per l'uso con lpr?


64

La lprpagina man dice che una stampante di destinazione può essere specificata con il -Pflag.

-P destination[/instance]
    Prints files to the named printer.

Ho "aggiunto" varie stampanti su condivisioni Samba locali usando la GUI di Ubuntu / Gnome. Come posso ottenere un elenco di queste stampanti disponibili nel formato previsto dalla -Pbandiera (preferibilmente da una shell bash)?

Risposte:



12

Per ottenere un elenco è possibile utilizzare:

lpstat -a

o

cat /etc/printcap

Per stampare solo i nomi delle stampanti:

lpstat + read + array:

$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"

lpstat + awk:

$ lpstat -a | awk '{print $1}'

lpstat + cut:

$ lpstat -a | cut -f1 -d ' '

cat + grep + cut in /etc/printcap:

$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v

Questo è ciò che viene mostrato, uno per riga:

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

Sento che le lpstatsoluzioni sono più eleganti e affidabili. Principalmente perché /etc/printcapnon è stato trovato su alcuni sistemi che ho testato.

L'utilizzo di awko cutdipende da cosa hai installato e preferisci. L'opzione array bash read + bash dovrebbe funzionare su qualsiasi shell bash senza la necessità di esterni.

EDIT: ho detto che la soluzione contrassegnata non funziona per me su Amazon Linux. Ma immagino che funzioni se vuoi solo copiare i nomi delle stampanti dalla metà del resto dell'output. Funziona come usare solo lpstat -a.

$ lpstat -p -d
printer HP_Deskjet_2540_series is idle. enabled since Tue 22 Dec 2015 01:12:10 PM BRST
. . .
printer GCP-Save_to_Google_Docs is idle. enabled since Tue 15 Dec 2015 02:13:33 AM BRST
system default destination: HP_LaserJet_P1606dn

lpstat + cut funzionerà anche su OS X.
tresf,

Secondo il tuo campione di output, lpstat -p -dsembra funzionare ...
Skippy le Grand Gourou

Scusa, ma chiede How can I get a list of these available printers in the format that the (lpr) -P flag expects. Il mio esempio lpstat -p -dmostra chiaramente che si ottiene molto più del semplice nome della stampante. In tal caso non è possibile utilizzare quell'output per una lpr -P $PRINTERNAMEchiamata. Quindi no! lpstat -p -dnon funziona nell'esempio che ho dato.
Gus Neves,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.