从命令行打印


28

如何将命令行输出直接打印到打印机。

我正在使用ubuntu服务器12.04,必须将文件复制到共享目录中,然后从桌面ubuntu发行版下载文件以进行打印。

任何帮助表示赞赏


您没有说要打印纯文本还是PDF。某些系统仅支持开箱即用的纯文本,因此需要解决。
Alexis

我不知道他们为什么拒绝我的答案,只是试试看。
马钱

@nux +1所有答案都非常感谢大家
kamil 2014年

@alexis我很清楚:我想打印控制台输出。例如,ls直接输出到打印机
kamil 2014年

糟糕,您确实说过了,但我错过了,对不起!
亚历克西斯

Answers:


35

主要有两个默认命令:

lprlp

man lpr 给出输出:

lpr提交文件进行打印。在命令行上命名的文件将发送到命名打印机(如果未指定目标,则为默认目标)。如果命令行上未列出任何文件,则lpr从标准输入中读取打印文件。

man lp 给出输出:

lp提交文件进行打印或更改挂起的作业。使用文件名“-”强制从标准输入进行打印。

所以很容易使用命令:

lp /path-to-file-to-print

要么

lpr /path-to-file-to-print

15

您可以使用 lp

例如:

man firefox | lp -d printername

这会将手册页从firefox打印到指定的打印机


1
谢谢,我还需要使用o fit-to-page来使页面上的文字更好。man bash | lp -o media=letter -o portrait -o fit-to-page --最后确保确保读取标准输入。
伊利亚·林恩

1
如果您的打印机是默认打印机,则不需要该-d参数。在具有Unity的Ubuntu上,通过单击“搜索”按钮设置默认打印机,然后键入“打印”,它将带您到可以设置默认值的正确位置。另外,lp在示例中,您说过使用Unix已经有一段时间了。 lpr在Ubuntu上也一样。
SDsolar

4

如果您安装了它们,那么另外一对值得了解的选项是

这些对于为带编号的页面提供标题和可选的行号很有用。您还可以使用then来打印小册子样式(例如,每页两页)

我将它们与支持Postscript的打印机一起使用,但是我相信Ubuntu的打印系统可以为任何受支持的打印机光栅化PS。


这是一个好主意
kamil

确保直接打编码后记。
SDsolar

3

您可能想了解如何首先访问打印机- lpstat将为您提供该信息。如果在两个系统之间比较其输出,则可能可以判断两个打印机上是否均已配置了相关打印机。lpstat -p -d列出所有打印机及其状态,并告知已将哪一台设置为默认打印机。

您可以简单地将输出通过管道传递给lpor lpr命令。您可能想要插入一个用于漂亮打印或分页的过滤器。在debian手册“突出显示和格式化纯文本数据”中对工具进行了很好的总结,但是我通常只是sed在将所有内容通过发送之前用于突出显示提示和其他内容。a2ps


2

要在使用中打印.txt文件:

command | lpr -P printername -p ( periority from 1 to 100 )

范例:

ls -l | lpr -P printername -p 1 

1

问题是关于如何从服务器上的命令行进行打印,这听起来像您尚未在该系统上定义任何打印机。我没有可以检查的系统,因此以下内容是大概的,但它们应该可以为您提供总体思路:

  1. 确保CUPS系统已安装并正在运行。它提供了将处理您的打印作业的守护程序。
  2. 安装完成后,您需要设置一台或多台网络打印机进行打印。安装打印机的通常方法是使用Printer Admin实用程序,但是显然您没有设置为从服务器上运行任何GUI程序,而只是通过ssh进行命令行访问。由于您已经在同一网络上安装了Ubuntu桌面系统,因此,我尝试将目录内容/etc/cups从桌面盒复制到服务器。它应包含所需的所有打印机定义和驱动程序。检查文件是否进行了必要的调整(如果您的设置提到两个系统之间的用户ID或密码不同),请重新启动cupsd,如果幸运的话,您将可以使用lpr从命令行打印。

PS。一时之间,您可以安装足够的X实用程序,以通过与桌面Ubuntu Box的远程X连接(使用登录)运行Print Admin GUI实用程序ssh -X,并定义所需的打印机。但是希望这不是必需的。


1

您可以使用该lp命令。

要将命令的输出打印到默认打印机(用于lpstat -d查看默认打印机是什么):

echo "test" | lp

要打印到特定打印机(用于lpstat -p | awk '{print $2}'列出可用的打印机名称):

echo "test" | lp -d printername

要打印文件而不是命令输出:

lp /path/to/file
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.