Bir liste almak için kullanabilirsiniz:
lpstat -a
veya
cat /etc/printcap
Yalnızca yazıcı adlarını yazdırmak için:
lpstat + okuma + dizi:
$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"
lpstat + awk:
$ lpstat -a | awk '{print $1}'
lpstat + kes:
$ lpstat -a | cut -f1 -d ' '
kedi + grep + kesip /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
Bu, her satırda bir tane gösterilir.
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
Gibi hissediyorum lpstat
çözümler daha şık ve güvenilir. Çünkü /etc/printcap
test ettiğim bazı sistemlerde bulunmadı.
Kullanma hakkında awk
ya cut
, yüklü ve tercih ne bağlıdır. Bash read + bash array seçeneği, haricilara ihtiyaç duymadan herhangi bir bash kabuğunda çalışmalıdır.
EDIT: İşaretli çözümün benim için Amazon Linux'ta işe yaramadığını söyledim. Ancak, yalnızca yazıcı adlarını çıktının geri kalan kısmının ortasından kopyalamak istiyorsanız işe yarar. Sadece kullanmakla aynı şekilde çalışır 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
işe yaradığını buldum .