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
相关推荐
阿里云大数据AI技术5 分钟前
阿里云 EMR AI 助手正式发布:从问答工具到全栈智能运维助手
运维·人工智能
你好潘先生6 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
orion5718 小时前
Missing Semester Class1:course overview and introduction of shell
linux
SkyWalking中文站1 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
用户120487221611 天前
Linux驱动编译与加载
linux·嵌入式
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式