$ lpstat -p -d
Del manual de CUPS.
Para obtener una lista puede usar:
lpstat -a
o
cat /etc/printcap
Para imprimir solo los nombres de las impresoras:
lpstat + lectura + matriz:
$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"
lpstat + awk:
$ lpstat -a | awk '{print $1}'
lpstat + corte:
$ lpstat -a | cut -f1 -d ' '
gato + grep + corte en /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
Esto es lo que se muestra, uno por línea:
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
Me siento como el lpstat
Las soluciones son más elegantes y fiables. Principalmente porque /etc/printcap
no se encontró en algunos sistemas que probé.
Acerca del uso de awk
o cut
, depende de lo que haya instalado y prefiera. La opción bash read + bash array debería funcionar en cualquier shell bash sin necesidad de elementos externos.
EDITAR: Dije que la solución marcada no funciona para mí en Amazon Linux. Pero supongo que funciona si solo desea copiar los nombres de las impresoras del medio del resto de la salida. Funciona igual que usar 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