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 lpstat
rozwiązania są bardziej eleganckie i niezawodne. Głównie dlatego, że /etc/printcap
nie został znaleziony w niektórych testowanych przeze mnie systemach.
O używaniu awk
lub cut
zależ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
lpq
działa.