Pour obtenir une liste, vous pouvez utiliser :
lpstat -a
o
cat /etc/printcap
Pour imprimer uniquement les noms des imprimantes :
lpstat + lecture + tableau :
$ 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
Voici ce qui est affiché, un par ligne :
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
J'ai l'impression que le lpstat
sont plus élégantes et plus fiables. Principalement parce que /etc/printcap
n'a pas été trouvé sur certains systèmes que j'ai testés.
A propos de l'utilisation awk
o cut
Cela dépend de ce que vous avez installé et de ce que vous préférez. L'option bash read + bash array devrait fonctionner sur n'importe quel Shell bash sans avoir besoin d'externes.
EDIT : J'ai dit que la solution marquée ne fonctionne pas pour moi sur Amazon Linux. Mais je suppose qu'elle fonctionne si vous voulez juste copier les noms des imprimantes au milieu du reste de la sortie. Cela fonctionne de la même manière que si vous utilisiez simplement 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