Jak wyświetlić listę nazw drukarek dopuszczalnych do użytku z lpr?

64

lprStrona człowiek mówi drukarka docelowy można określić z -Pflagą.

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

„Dodałem” różne drukarki do lokalnych udziałów Samby, używając GUI w Ubuntu / Gnome. Jak mogę uzyskać listę tych dostępnych drukarek w formacie oczekiwanym przez -Pflagę (najlepiej od powłoki bash)?

Ian Mackinnon
źródło

Odpowiedzi:

98
$ lpstat -p -d

Z podręcznika CUPS .

Kevin Panko
źródło
4
Dziękuję Ci! Właśnie odkryłem, że to lpqdziała.
Ian Mackinnon,
6
Ilekroć tego szukam, szukam również sposobu wyboru domyślnej drukarki:lpoptions -d printername
Joshua Goldberg,
12

Aby uzyskać listę, możesz użyć:

lpstat -a

lub

cat /etc/printcap

Aby wydrukować tylko nazwy drukarek:

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

kot + grep + włóż /etc/printcap:

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

Oto, co pokazano, po jednym w wierszu:

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

Mam wrażenie, że lpstatrozwiązania są bardziej eleganckie i niezawodne. Głównie dlatego, że /etc/printcapnie został znaleziony w niektórych testowanych przeze mnie systemach.

O używaniu awklub cutzależy od tego, co zainstalowałeś i co wolisz. Opcja bash read + bash array powinna działać na dowolnej powłoce bash bez potrzeby stosowania zewnętrznych elementów.

EDYCJA: Powiedziałem, że oznaczone rozwiązanie nie działa dla mnie w Amazon Linux. Ale myślę, że to działa, jeśli chcesz po prostu skopiować nazwy drukarek z połowy reszty wydruku. Działa tak samo jak przy użyciu 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
Gus Neves
źródło
lpstat + cut będzie również działać na OS X.
tresf
Zgodnie z twoją próbką wyjściową lpstat -p -dwydaje się , że działa…
Skippy le Grand Gourou
Przepraszam, ale pyta How can I get a list of these available printers in the format that the (lpr) -P flag expects. Mój przykład lpstat -p -dwyraźnie pokazuje, że dzięki temu dostajesz więcej niż tylko nazwę drukarki. W takim przypadku nie można użyć tego wyjścia do lpr -P $PRINTERNAMEpołączenia. Więc nie! lpstat -p -dnie działa w podanym przeze mnie przykładzie.
Gus Neves,