Wie liste ich Druckernamen auf, die mit lpr verwendet werden können?


64

Die lprManpage besagt, dass ein Zieldrucker mit dem -PFlag angegeben werden kann.

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

Ich habe verschiedene Drucker auf lokalen Samba-Freigaben über die GUI in Ubuntu / Gnome hinzugefügt. Wie kann ich eine Liste dieser verfügbaren Drucker in dem Format erhalten, das das -PFlag erwartet (vorzugsweise von einer Bash-Shell)?

Antworten:



12

Um eine Liste zu erhalten, können Sie Folgendes verwenden:

lpstat -a

oder

cat /etc/printcap

So drucken Sie nur die Druckernamen:

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

Dies ist, was gezeigt wird, eine pro Zeile:

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

Ich bin der Meinung, dass die lpstatLösungen eleganter und zuverlässiger sind. Meistens wurde da /etc/printcapauf einigen Systemen nichts gefunden was ich getestet habe.

Die Verwendung von awkoder cuthängt davon ab, was Sie installiert haben und bevorzugen. Die Option bash read + bash array sollte auf jeder bash-Shell funktionieren, ohne dass externe Elemente erforderlich sind.

BEARBEITEN: Ich sagte, dass die markierte Lösung für mich unter Amazon Linux nicht funktioniert. Aber ich denke, es funktioniert, wenn Sie nur die Druckernamen aus der Mitte des Restes der Ausgabe kopieren möchten. Funktioniert genauso wie mit just 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 funktioniert auch unter OS X.
Tresf

lpstat -p -d
Scheint

Entschuldigung, aber er fragt How can I get a list of these available printers in the format that the (lpr) -P flag expects. Mein Beispiel von lpstat -p -dzeigt deutlich, dass man damit mehr als nur den Druckernamen bekommt. In diesem Fall können Sie diesen Ausgang nicht für einen lpr -P $PRINTERNAMEAnruf verwenden. Also nein! lpstat -p -dfunktioniert nicht in dem Beispiel, das ich gegeben habe.
Gus Neves
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.