使用 lp 命令从 Linux 终端控制打印机
要点
- 使用 lp 从命令行打印对于将文件直接发送到打印机而无需打开应用程序非常有用。
- 大多数发行版都包含 lp,但您可能需要使用“sudo apt install cups”等命令来安装它。
- 使用 lpstat、lpoptions 和 lpinfo 可以帮助您查找有关打印机的信息,并从命令行发送带有布局选项的打印作业。
Linux lp 命令允许您从终端窗口进行打印。您可以手动或从脚本中发送打印作业,设置页面方向和其他首选项,并列出打印机的功能。
为什么从命令行打印?
仅凭我的超能力假设,我认为家庭环境中 Linux 计算机的大多数打印很可能是在 GUI 应用程序内部完成的。
当然,也有支持打印的基于文本的用户界面 (TUI) 应用程序。它们在终端窗口内运行,并允许您将内容发送到打印机。但我仍然预计大部分打印来自 GUI 应用程序内部。
对于大多数人来说,在任何应用程序之外从命令行打印文本文件并不是一项日常活动,但它可能很有用。您不需要启动程序、加载文件、点击打印,然后再次关闭应用程序。使用 lp 命令,您可以从命令行将文件直接发送到打印机。
这在一定程度上很有用,但当您有一个需要打印某些内容的 shell 脚本时,它就派上用场了。使用 lp 及其支持程序系列可以轻松打印现有文件或打印脚本本身创建的文件。
但您需要了解的一点是,您无法将任何旧类型的文件发送到打印机。例如,您无法将 ODT 文件发送到打印机,因为它不是打印机理解的格式。当您在 LibreOffice 中打开 ODT 文档并打印它时,LibreOffice 会将文件的翻译版本发送到打印机,以便打印机可以理解并执行操作。我们在这里讨论的打印最好与文本文件一起使用。
安装lp
大多数发行版都直接包含 lp 和其他与打印机相关的命令。如果您确实需要安装它们,这些是您需要的命令。
在 Ubuntu 上,您需要输入:
sudo apt install cups
在 Fedora 上使用以下命令:
sudo dnf install cups
Manjaro 的命令是:
sudo pacman -S cups
了解您的打印机
lp 命令有几个有用的联合命令。其中之一是 lpstat,它可以找到有关您的打印机的信息。
在不使用任何命令行选项的情况下,lpstat 显示打印队列。
lpstat
-p(打印机)选项列出已配置的打印机及其状态,例如空闲或正在打印。
lpstat -p
-d(默认)选项显示默认打印机。要从此命令获得有用的响应,您需要将打印机配置为默认设备。仅仅因为您只有一台打印机,并不意味着它就是默认打印机。
lpstat -d
lpoptions 命令列出了您的打印机支持的选项。如果未指定打印机,则描述默认打印机。
lpoptions
要查找特定打印机,您可以使用 -p(打印机)选项在命令行上传递名称。由于我们只连接了一台打印机,并且它是默认打印机,因此我们将得到与以前相同的结果。
lpoptions -p Lexmark_B2442dw
请注意,可以使用 lpstat -p 输出找到要使用的名称。
为了使 lpoptions 命令的输出更具可读性,您可以通过 column 命令传递它。如果我们告诉它在遇到空格时开始一个新行,我们将得到一个粗略且准备好的柱状格式,更容易解析。
lpoptions -p Lexmark_B2442dw | column -t -o $'\n'
lpinfo 命令可以与 -v(详细)选项一起使用,为您提供检测到的打印机的连接详细信息。显示能够使用每个协议的打印机。
lpinfo -v
现在我们了解了打印机,我们可以向它发送打印作业。
使用 lp 创建打印作业
lp 命令是实际将打印作业发送到打印机的命令。
我们可以使用 lpq 快速浏览一下打印队列。
lpq
我们从一个空的打印队列开始。要发送作业,我们使用 lp 命令,后跟文件名。
lp sample-file-1.txt
如果您足够快,或者文件足够大,您可以使用 lpq 来检查作业是否已到达打印队列。
lpq
我们可以向队列中添加更多作业,打印机将在完成工作负载时按顺序处理它们。
lp sample-file-2.txt
lpq
如果您的文件名称中包含空格,请将文件名用引号引起来,或者使用制表符扩展来完成名称。制表符扩展会自动为您转义空格。
lp "sample file 3.txt"
lpq
如果您需要文档的多个副本,请使用 -n(份数)选项,后跟所需的副本数。
lp -n 15 sample-file-1.txt
lpq
请注意,您在打印队列中看不到 15 个条目。该作业将发送到打印机一次,并附有打印 15 次的指令。
为了节省纸张,并且如果您的打印机支持,您可以进行双面打印。您可以选择将页面沿长边或短边打开。我们通过使用 -o(选项)选项并传入我们想要使用的选项的名称(在我们的例子中为“sides”)以及该选项的任何参数来完成此操作。
让我们打印一些双面的东西,页面在长边上翻转。
lp -o sides=two-sided-long-edge sample-file-1.txt
为了打印页面以使页面在短边上翻转,我们使用双面短边参数。
lp -o sides=two-sided-short-edge sample-file-1.txt
选择横向或纵向同样简单。我们再次使用 -o(选项)选项,并指定纵向或横向。
lp -o landcape sample-file-1.txt
还有许多其他选项可以与 -o(选项)选项一起使用。如果您有兴趣,请查看手册页。您可能会发现某些选项很有用。
- job-sheets=name:打印封面。将名称替换为机密、机密、秘密、标准、绝密或非机密之一。
- media=size:设置纸张尺寸。典型尺寸为“a4”、“letter”和“legal”。
- number-up=number:数字可以是 2、4、6、9 或 16。这决定了一个输出页面上挤满了多少个输入页面。
- print-quality=quality:质量值可以是 3(草稿)、4(正常)或 5(最佳)。
取消打印作业
要取消打印作业,您需要知道其作业编号。您可以在 lpq 命令的输出中找到它。
我们需要的命令是取消,后面是作业编号。
lpq
cancel 16
lpq
您可以一次取消多个作业。
lpq
cancel 15 17
lpq
我们现在已经清空了打印队列。
硬拷贝,那个
通过终端窗口控制打印机,您可以从命令行进行打印,并对页面布局和纸张处理进行一定程度的控制,但当您需要一种从 shell 脚本内部进行打印的方法时,它就真正发挥了作用。