Answers:
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 +切入/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读取+ bash数组选项应该可以在任何bash shell上运行,而无需外部。
编辑:我说标记的解决方案对我在Amazon Linux上不起作用。但是我想如果您只想从输出的其余部分中间复制打印机名称,则可以使用。与使用just相同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 -p -d
似乎有效……
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
在我给出的示例中不起作用。
lpq
也可以。