Comment lister les noms d'imprimantes acceptables pour une utilisation avec lpr?

64

La lprpage de manuel indique qu'une imprimante de destination peut être spécifiée avec l' -Pindicateur.

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

J'ai «ajouté» diverses imprimantes sur des partages Samba locaux à l'aide de l'interface graphique d'Ubuntu / Gnome. Comment puis-je obtenir une liste de ces imprimantes disponibles dans le format attendu par le -Pdrapeau (de préférence à partir d'un shell bash)?

Ian Mackinnon
la source

Réponses:

98
$ lpstat -p -d

Du manuel de CUPS .

Kevin Panko
la source
4
Je vous remercie! Je viens de trouver que ça lpqmarche aussi.
Ian Mackinnon
6
Chaque fois que je cherche ceci, je cherche aussi comment choisir une imprimante par défaut:lpoptions -d printername
Joshua Goldberg
12

Pour obtenir une liste, vous pouvez utiliser:

lpstat -a

ou

cat /etc/printcap

Pour imprimer uniquement les noms d'imprimante:

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 ' '

chat + grep + coupé dans /etc/printcap:

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

Voici ce qui est montré, un par ligne:

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

J'ai l'impression que les lpstatsolutions sont plus élégantes et fiables. Principalement parce que /etc/printcapn'a pas été trouvé sur certains systèmes que j'ai testés.

L'utilisation de awkou cutdépend de ce que vous avez installé et que vous préférez. L'option de tableau bash read + bash devrait fonctionner sur n'importe quel shell bash sans recourir à des ressources externes.

EDIT: J'ai dit que la solution marquée ne fonctionnait pas pour moi sur Amazon Linux. Mais je suppose que cela fonctionne si vous voulez simplement copier les noms d’imprimante du milieu du reste de la sortie. Fonctionne comme si vous utilisiez juste 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
Gus Neves
la source
lpstat + cut fonctionnera également sous OS X.
Tresf
Selon votre échantillon de sortie, lpstat -p -dsemble fonctionner…
Skippy le Grand Gourou
Désolé, mais il demande How can I get a list of these available printers in the format that the (lpr) -P flag expects. Mon exemple lpstat -p -dmontre clairement que vous obtenez plus que le nom de l’imprimante. Dans ce cas, vous ne pouvez pas utiliser cette sortie pour un lpr -P $PRINTERNAMEappel. Donc non! lpstat -p -dne fonctionne pas dans l'exemple que j'ai donné.
Gus Neves