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)?

Odpowiedzi:



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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.