手册lpr
页说可以用标志指定目标打印机-P
。
-P destination[/instance] Prints files to the named printer.
我使用 Ubuntu/Gnome 中的 GUI 在本地 Samba 共享上“添加”了各种打印机。如何以标志-P
期望的格式(最好从 bash shell)获取这些可用打印机的列表?
答案1
答案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
在我测试的一些系统上没有找到。
关于使用awk
或cut
,取决于您安装了什么以及您喜欢什么。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