从终端打印文本

从终端打印文本

我想使用没有桌面环境的 Linux 发行版,但我需要打印我输入的作业。

print homework.txt我总是可以通过电子邮件将其发送给自己并从另一台计算机进行打印,但如果我可以从 bash 提示符执行类似的操作,那就太好了。有人有办法做到这一点吗?

答案1

CUPS 直接识别许多不同类型的文件,包括文本、PostScript、PDF 和图像文件。这允许您从应用程序内部或在命令行进行打印,以最方便的为准!键入以下任一命令将文件打印到系统上的默认(或唯一)打印机:

lp filename 
lpr filename

使用-d带有lp命令的选项来打印到特定打印机:

lp -d printer filename

或者-P使用以下lpr命令的选项:

lpr -P printer filename

打印程序的输出

lp和命令都lpr支持从标准输入打印:

program | lp
program | lp -d printer
program | lpr
program | lpr -P printer

如果程序不提供任何输出,则不会排队等待打印任何内容。

可以使用以下命令将更多高级选项添加到打印作业中-o 选项。以装订为例:

lpr -P printer -o StapleLocation=UpperLeft

来源和更多详细信息。

答案2

上次我使用这样的系统时,我更喜欢enscript.已经有一段时间了,但我似乎记得它是一个更复杂的版本,lpr它可以完成所有功能lpr,甚至还可以完成一些功能。它的工作原理如下:

enscript foo.file

它可以直接打印到打印机或将文本转换为 postscript。它应该在所有主要发行版的存储库中可用。

答案3

这对我有用:

我选择安装 Manjaro“完整版”,其中包括打印机网络和打印支持。根据过去的经验,“最小”安装需要付出很大的努力才能打印任何内容。

我不知道我的打印机的名称。我尝试过lpstat -t,但显示以下内容:

scheduler is running
no system default destination
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.

起初,我可以通过 Geany 连接来让 lpstat 工作,但几分钟后打印机就会超时。

由于我有一台相对较新的打印机,它使用“IPP”标准。我使用了ippfind -l感谢这个答案https://unix.stackexchange.com/a/490827/8234

对我来说,地址是 ipp://whatever.local:631/ipp/print

然后我找到了这个答案https://unix.stackexchange.com/a/683993/8234效果很好lpadmin -p Cool -v ipp://whatever.local:631/ipp/print -m everywhere

现在lpstat -t按预期工作:

Cool 自 2023 年 3 月 19 日星期日 02:23:37 AM 起接受请求 CDT 打印机 Cool 处于空闲状态。自 2023 年 3 月 19 日星期日 02:23:37 AM CDT 起启用

然后我可以简单地做echo "test" | lp -d Cool

PS:也许有更简单的方法。您可以尝试ippfind -s然后将空格更改为下划线,echo "test" | lp -d Canon_Cool_series但如果没有下划线,我无法使其工作,并且我找不到任何文档解释其工作原理。基本上,我通过 Geany 激活打印机来作弊,然后我可以看到打印机lpstat -t

为了将来的参考,我会首先尝试更简单的“下划线”方法,如果超时或不起作用,请使用更长的“lpadmin”方法。

相关内容