Để có được một danh sách bạn có thể sử dụng:
lpstat -a
hoặc là
cat /etc/printcap
Để chỉ in tên máy in:
lpstat + đọc + mảng:
$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"
lpstat + awk:
$ lpstat -a | awk '{print $1}'
lpstat + cắt:
$ lpstat -a | cut -f1 -d ' '
mèo + grep + cắt trong /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
Đây là những gì được hiển thị, một trên mỗi dòng:
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
Tôi cảm thấy như các lpstat
giải pháp là thanh lịch và đáng tin cậy hơn. Chủ yếu là vì /etc/printcap
không tìm thấy trên một số hệ thống tôi đã thử nghiệm.
Về việc sử dụng awk
hoặc cut
, phụ thuộc vào những gì bạn đã cài đặt và thích. Tùy chọn bash read + bash mảng sẽ hoạt động trên bất kỳ shell bash nào mà không cần bên ngoài.
EDIT: Tôi đã nói giải pháp được đánh dấu không hoạt động đối với tôi trên Amazon Linux. Nhưng tôi đoán nó hoạt động nếu bạn chỉ muốn sao chép tên máy in từ giữa phần còn lại của đầu ra. Hoạt động tương tự như chỉ sử dụng 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
hoạt động.