linux lpr命令

Linux lpr命令用于向打印队列提交打印作业,是CUPS打印系统中的重要命令。

提示: lpr命令是BSD打印系统的一部分,在Linux系统中通常与lpq(查看队列)和lprm(删除作业)命令配合使用。

语法格式

lpr [选项] [文件名...]

常用选项

选项 说明
-E 强制加密连接到服务器
-H 服务器[:端口] 指定打印服务器
-P 打印机 指定目标打印机
-# 份数 指定打印份数(1-100)
-h 不打印标题页
-l 按原始数据打印,不进行过滤
-o 选项 设置作业选项
-p 格式化打印文本文件(添加页眉)
-r 打印后删除文件
-U 用户名 指定用户名
-m 打印完成后发送邮件通知
--help 显示帮助信息

使用示例

示例1:基本打印

# 打印文件到默认打印机
lpr document.txt

# 打印PDF文件
lpr report.pdf

# 打印多个文件
lpr file1.txt file2.txt file3.txt

示例2:指定打印机

# 查看可用打印机
lpstat -p -d

# 打印到特定打印机
lpr -P HP_LaserJet document.txt

# 打印到网络打印机
lpr -H printserver.example.com -P ColorPrinter image.jpg

示例3:设置打印选项

# 打印多份文档
lpr -# 3 document.txt

# 不打印标题页
lpr -h document.txt

# 打印后删除原文件(谨慎使用)
lpr -r document.txt

# 发送打印完成通知
lpr -m document.txt

# 格式化打印文本文件(添加页眉、页脚)
lpr -p document.txt

示例4:高级打印设置

# 设置页面方向
lpr -o landscape document.pdf  # 横向
lpr -o portrait document.pdf   # 纵向

# 设置纸张大小
lpr -o media=A4 document.txt
lpr -o media=Letter document.txt

# 双面打印
lpr -o sides=two-sided-long-edge document.txt  # 长边翻转
lpr -o sides=two-sided-short-edge document.txt # 短边翻转

# 单面打印
lpr -o sides=one-sided document.txt

# 设置打印质量
lpr -o print-quality=3 document.txt  # 草稿质量
lpr -o print-quality=4 document.txt  # 普通质量
lpr -o print-quality=5 document.txt  # 高质量

示例5:原始数据打印

# 打印PostScript文件(不进行格式转换)
lpr -l document.ps

# 打印纯文本文件(原始格式)
lpr -l raw_text.txt

# 常用于打印已经格式化的打印数据

示例6:从标准输入打印

# 打印命令输出
ls -la | lpr

# 打印文件内容
cat document.txt | lpr

# 打印当前目录列表
pwd; ls -la | lpr

# 打印系统信息
uname -a | lpr

# 结合管道和过滤器
grep "error" logfile.txt | lpr

示例7:实际工作流程

# 1. 查看打印机状态
lpstat -p -d

# 2. 提交打印作业
lpr -P Office_Printer -# 2 -o media=A4 -o sides=two-sided-long-edge report.pdf

# 3. 查看打印队列
lpq

# 4. 如果发现错误,取消打印作业
lprm 作业号

# 5. 重新提交正确的作业
lpr -P Office_Printer corrected_report.pdf

示例8:在脚本中使用

#!/bin/bash
# 自动打印脚本

# 配置变量
PRINTER="HP_LaserJet"
COPIES=1
OPTIONS="-o media=A4 -o sides=one-sided"

# 检查打印机是否可用
if lpstat -p "$PRINTER" >/dev/null 2>&1; then
    echo "打印机 $PRINTER 可用"
else
    echo "错误: 打印机 $PRINTER 不可用"
    exit 1
fi

# 打印所有PDF文件
for file in *.pdf; do
    if [ -f "$file" ]; then
        echo "正在打印: $file"
        lpr -P "$PRINTER" -# "$COPIES" $OPTIONS "$file"
        if [ $? -eq 0 ]; then
            echo "成功提交打印作业: $file"
        else
            echo "打印失败: $file"
        fi
    fi
done

示例9:批量打印处理

# 批量打印所有文本文件
for file in *.txt; do
    lpr -P Default_Printer "$file"
done

# 批量打印并记录日志
log_file="print_$(date +%Y%m%d_%H%M%S).log"
for file in *.pdf; do
    echo "$(date): 开始打印 $file" >> "$log_file"
    lpr -P Network_Printer -# 1 "$file"
    echo "$(date): 完成打印 $file" >> "$log_file"
done

打印选项详解

选项 说明
-o media A4, Letter, Legal, A3等 纸张大小
-o sides one-sided, two-sided-long-edge, two-sided-short-edge 单/双面打印
-o landscape (无值) 横向打印
-o portrait (无值) 纵向打印
-o fit-to-page (无值) 适应页面大小
-o scaling 百分比(如100, 50) 缩放比例
-o page-ranges 1-3,5,7-9 打印页码范围
-o number-up 1,2,4,6,9,16 每张纸打印多页
-o outputorder normal, reverse 输出顺序
注意:
  • 使用-r选项会删除原文件,请谨慎使用
  • 打印作业会占用系统内存,大型文件可能需要较长时间处理
  • 不同打印机支持的选项可能不同,请参考打印机文档
  • 使用-l选项时,文件必须是打印机可以直接处理的格式
  • 网络打印需要确保打印服务器可达且权限正确
  • CUPS服务必须正在运行才能使用lpr命令

打印系统管理

安装打印系统

# Ubuntu/Debian系统
sudo apt-get install cups cups-client

# CentOS/RHEL系统
sudo yum install cups cups-client

# 启动CUPS服务
sudo systemctl start cups
sudo systemctl enable cups

# 检查服务状态
systemctl status cups

配置打印机

# 查看所有打印机
lpstat -p -d

# 设置默认打印机
lpoptions -d 打印机名

# 添加网络打印机
lpadmin -p 打印机名 -E -v socket://打印机IP:9100 -m everywhere

故障排除

问题:lpr命令未找到

原因: 打印系统未安装

解决: 安装CUPS客户端

sudo apt-get install cups-client
问题:打印机不可用

原因: 打印机未配置或离线

解决: 检查打印机状态

lpstat -p
cupsenable 打印机名
问题:打印作业卡住

解决: 清除打印队列

# 取消所有作业
lprm -
# 或
cancel -a
问题:打印格式错误

解决: 使用正确的文件格式

# 将文件转换为PDF
libreoffice --headless --convert-to pdf document.doc

相关命令

  • lpq - 查看打印队列状态
  • lprm - 删除打印作业
  • lpstat - 显示打印机状态信息
  • lp - System V风格的打印命令
  • cancel - 取消打印作业
  • lpadmin - 打印机管理工具