วิธีแสดงรายการชื่อเครื่องพิมพ์ที่ยอมรับได้สำหรับใช้กับ lpr


64

lprหน้าคนพูดว่าเครื่องพิมพ์ปลายทางสามารถระบุกับ-Pธง

-P destination[/instance]
    Prints files to the named printer.

ฉันมี 'เพิ่ม' เครื่องพิมพ์ต่าง ๆ ใน Samba ที่ใช้ร่วมกันในท้องถิ่นโดยใช้ GUI ใน Ubuntu / Gnome ฉันจะรับรายการเครื่องพิมพ์ที่พร้อมใช้งานเหล่านี้ในรูปแบบที่การ-Pตั้งค่าสถานะที่คาดไว้ (โดยเฉพาะอย่างยิ่งจากเปลือก bash) ได้อย่างไร

คำตอบ:


98
$ lpstat -p -d

จากคู่มือ CUPS


4
ขอขอบคุณ! ฉันเพิ่งพบว่าใช้lpqงานได้เช่นกัน
Ian Mackinnon

6
เมื่อใดก็ตามที่ฉันกำลังมองหาสิ่งนี้ฉันก็กำลังมองหาวิธีเลือกเครื่องพิมพ์เริ่มต้นด้วย:lpoptions -d printername
Joshua Goldberg

12

ในการรับรายการคุณสามารถใช้:

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

lpstat + cut จะทำงานบน OS X เช่นกัน
tresf

ตามตัวอย่างผลลัพธ์ของคุณlpstat -p -dดูเหมือนว่าจะทำงาน ...
Skippy le Grand Gourou

How can I get a list of these available printers in the format that the (lpr) -P flag expectsขออภัยเขาถาม ตัวอย่างของฉันlpstat -p -dแสดงให้เห็นชัดเจนว่าคุณได้รับมากกว่าแค่ชื่อเครื่องพิมพ์ด้วย ในกรณีนี้คุณไม่สามารถใช้เอาต์พุตนั้นสำหรับการlpr -P $PRINTERNAMEโทร ดังนั้นไม่! lpstat -p -dไม่ทำงานในตัวอย่างที่ฉันให้
Gus Neves
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.