要获取列表,您可以使用:

要获取列表,您可以使用:

手册lpr页说可以用标志指定目标打印机-P

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

我使用 Ubuntu/Gnome 中的 GUI 在本地 Samba 共享上“添加”了各种打印机。如何以标志-P期望的格式(最好从 bash shell)获取这些可用打印机的列表?

答案1

$ lpstat -p -d

来自CUPS 手册

-p选项指定您想要查看打印机列表,该-d选项报告当前默认打印机或类。

答案2

要获取列表,您可以使用:

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在我测试的一些系统上没有找到。

关于使用awkcut,取决于您安装了什么以及您喜欢什么。bash read + bash array 选项应该可以在任何 bash shell 上使用,而无需外部设备。

编辑 :我说标记的解决方案在 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

相关内容