Linux print命令详解

一、"print"在Linux中的多重含义

Linux的"print"命令实际涉及三类截然不同的东西:

  1. /usr/bin/print:Debian/Ubuntu下mailcap机制提供的命令,会根据文件类型自动选择程序进行打印,实践中很少直接使用
  2. print内建命令 :仅存在于ksh和zsh的内建命令,用于输出文本(类似echo/printf),bash中不可用
  3. 真正的打印命令 :即lp(System V风格)和lpr(BSD风格),这才是用户需要的核心命令

💡 当你想要"在Linux命令行打印文件",实际应使用lp或lpr,而非名为"print"的命令。


二、系统环境准备

2.1 安装打印系统

绝大多数Linux发行版已预装lp和lpr。若缺失,安装CUPS(通用Unix打印系统)即可:

发行版 安装命令
Ubuntu/Debian sudo apt install cups
Fedora/RHEL sudo dnf install cups
Manjaro/Arch sudo pacman -S cups

安装后需启动CUPS服务:sudo systemctl start cups

2.2 检查打印机配置

打印前先确认打印机状态:

命令 用途 示例
lpstat -p 列出已配置的打印机 显示所有打印机及状态
lpstat -d 查看默认打印机 若无默认需手动设置
lpoptions 查看打印机的支持选项 lpoptions -p 打印机名

若没有默认打印机,可通过以下命令设置:

bash

复制代码
export PRINTER=你的打印机名          #临时生效
复制代码
lpoptions -d 你的打印机名           #永久生效

2.3 文件格式说明

lp/lpr不能直接发送任意类型文件 到打印机。打印机通常只理解PostScript(.ps)或PDF格式。因此,打印Word文档等文件前,需先转换为支持的格式------这也就是为什么普通用户更多使用GUI应用程序(如LibreOffice)打印,因为应用程序会自行完成格式转换。


三、基础打印命令:lp vs lpr

Linux历史上存在两套打印命令风格:System V体系(以lp为代表)和BSD体系(以lpr为代表)。当前主流的CUPS系统同时支持两者,绝大多数场景下它们可以互换使用。

3.1 lp命令------System V风格

基本语法 :

bash

复制代码
lp [选项] [文件名]
参数 含义 示例
-d printer 指定打印机 lp -d myprinter file.txt
-n num 打印份数 lp -n 5 file.txt 打印5份
-P pages 指定页码范围 lp -P 1-3 file.txt
-t title 作业标题 lp -t "Report" file.txt
-o option 打印机特定选项 lp -o media=A4 file.txt
-m 完成后发送邮件 lp -m file.txt
-H 指定打印时间 lp -H 08:00 file.txt(延迟到8点)
-U username 指定用户名 lp -U john file.txt
-E 强制加密连接 lp -E file.txt

3.2 lpr命令------BSD风格

基本语法 :

bash

复制代码
lpr [选项] [文件名]
参数 含义 示例
-P printer 指定打印机 lpr -P myprinter file.txt
-# num 打印份数 lpr -# 3 file.txt 打印3份
-T title 作业标题 lpr -T "Report" file.txt
-o option 打印机特定选项 lpr -o media=A4 file.txt
-r 打印后删除原文件 lpr -r file.txt
-h 不打印标题页 lpr -h file.txt
-m 完成后发送邮件 lpr -m file.txt

3.3 标准输入(stdin)用法

两者均支持从管道接收数据,方便脚本集成:

bash

复制代码
echo "Hello, World!" | lp                     #一行内容直接打印
复制代码
ls -l | lpr                                   #打印目录列表
复制代码
cat *.txt | lpr -P myprinter                  #合并多个文件并打印

四、打印选项详解

4.1 页面与布局控制

通过-o参数(lp和lpr均支持)控制打印外观:

选项 功能 示例
media=A4 / media=Letter 纸张大小 -o media=A4
orientation-requested=Portrait 纵向 -o orientation-requested=Portrait
orientation-requested=Landscape 横向 -o orientation-requested=Landscape
fit-to-page 自适应缩放 -o fit-to-page
color=black-and-white 黑白打印 -o color=black-and-white
sides=one-sided 单面打印 -o sides=one-sided
sides=two-sided-long-edge 双面(长边装订) -o sides=two-sided-long-edge
sides=two-sided-short-edge 双面(短边装订) -o sides=two-sided-short-edge
page-ranges=1-5 打印指定页 -o page-ranges=1-3
job-name="My Document" 作业命名 -o job-name="Report"

4.2 打印机依赖选项

不同打印机的选项集不同,使用lpoptions -l查看当前打印机支持的具体选项。


五、完整示例

5.1 打印文本文件

bash

复制代码
#使用默认打印机打印
复制代码
lp document.txt
复制代码
复制代码
#或
复制代码
lpr document.txt

5.2 指定打印机打印

bash

复制代码
# lp风格
复制代码
lp -d HP_LaserJet document.pdf
复制代码
复制代码
# lpr风格
复制代码
lpr -P HP_LaserJet document.pdf
相关推荐
流浪0017 分钟前
Linux系统篇47——线程(十二) POSIX 信号量与环形队列,把判空判满提前到访问之前
linux·操作系统·线程·信号量·环形队列
咖丨喱32 分钟前
【MMC Core + hc16 Host(WiFi SDIO 如何落到控制器)】
linux
等我调个Bug41 分钟前
【Linux系统篇】权限
linux·服务器
考研保研资料分享42 分钟前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
乐维_lwops1 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能
~光~~2 小时前
【嵌入式linux学习】Cache 策略:Write-Through / Write-Back + Allocation
linux·学习·spring
峥无2 小时前
Linux NPTL线程:创建/终止/等待/分离/栈布局内核原理|线程下篇
linux·运维·线程
元岳数字人小元2 小时前
数字人私有化部署:企业级AI数字场景长效落地优选方案
运维·人工智能·开源·人机交互·交互
Thneonl3 小时前
全集群钟差 300 毫秒会发生什么:证书悄悄过期,日志倒流
运维·后端