$ lpstat -p -d
Do manual do CUPS .
A página lpr
man diz que uma impressora de destino pode ser especificada com o sinalizador -P
.
-P destination[/instance] Prints files to the named printer.
Eu adicionei várias impressoras em compartilhamentos locais do Samba usando a GUI no Ubuntu / Gnome. Como posso obter uma lista dessas impressoras disponíveis no formato que o sinalizador -P
espera (de preferência de um shell bash)?
$ lpstat -p -d
Do manual do CUPS .
lpstat -a
ou
cat /etc/printcap
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 + corte em /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
Isso é o que é mostrado, um por linha:
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
Eu sinto que as soluções lpstat
são mais elegantes e confiáveis. Principalmente porque /etc/printcap
não foi encontrado em alguns sistemas que testei.
Sobre o uso de awk
ou cut
, depende do que você instalou e prefere. A opção bash read + bash array deve funcionar em qualquer shell bash sem a necessidade de externals.
EDIT: Eu disse que a solução marcada não funciona para mim no Amazon Linux. Mas eu acho que funciona se você quiser apenas copiar os nomes das impressoras do meio do resto da saída. Funciona da mesma forma que usando apenas 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