Untuk mendapatkan daftar, Anda dapat menggunakan:
lpstat -a
atau
cat /etc/printcap
Untuk hanya mencetak nama printer:
lpstat + baca + larik:
$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"
lpstat + awk:
$ lpstat -a | awk '{print $1}'
lpstat + potong:
$ lpstat -a | cut -f1 -d ' '
kucing + grep + potong /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
Inilah yang ditampilkan, satu per baris:
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
Saya merasa lpstat
solusinya lebih elegan dan dapat diandalkan. Sebagian besar karena /etc/printcap
tidak ditemukan pada beberapa sistem yang saya uji.
Tentang menggunakan awk
atau cut
, tergantung pada apa yang telah Anda instal dan sukai. Opsi bash read + bash array harus bekerja pada bash shell apa pun tanpa perlu eksternal.
EDIT: Saya katakan solusi yang ditandai tidak bekerja untuk saya di Amazon Linux. Tapi saya kira itu berfungsi jika Anda hanya ingin menyalin nama-nama printer dari tengah sisa output. Bekerja sama seperti menggunakan adil 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
bekerja juga.