ในการรับรายการคุณสามารถใช้:
lpstat -a
หรือ
cat /etc/printcap
หากต้องการพิมพ์เฉพาะชื่อเครื่องพิมพ์:
lpstat + อ่าน + อาร์เรย์:
$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"
lpstat + awk:
$ lpstat -a | awk '{print $1}'
lpstat + ตัด:
$ lpstat -a | cut -f1 -d ' '
cat + grep + cut /etc/printcap
:
$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v
นี่คือสิ่งที่แสดงหนึ่งต่อบรรทัด:
HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs
ฉันรู้สึกว่าlpstat
โซลูชันมีความสง่างามและน่าเชื่อถือมากกว่า ส่วนใหญ่/etc/printcap
เป็นเพราะไม่พบในบางระบบที่ฉันทดสอบ
เกี่ยวกับการใช้awk
หรือcut
ขึ้นอยู่กับสิ่งที่คุณติดตั้งและต้องการ ตัวเลือก bash read + bash array ควรใช้กับ bash shell ใด ๆ โดยไม่จำเป็นต้องใช้ externals
แก้ไข:ฉันกล่าวว่าวิธีแก้ปัญหาที่ทำเครื่องหมายไม่ได้สำหรับฉันใน Amazon Linux แต่ฉันเดาว่ามันใช้งานได้ถ้าคุณต้องการคัดลอกชื่อเครื่องพิมพ์จากตรงกลางของส่วนที่เหลือของผลลัพธ์ 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
งานได้เช่นกัน