Skip to content

Unix / Linux - 基本工具

Unix / Linux 基本实用工具 - 打印和邮件

Section titled “Unix / Linux 基本实用工具 - 打印和邮件”

本章介绍一些与文件打印和从命令行发送简单电子邮件相关的基本实用工具命令。虽然图形界面很常见,但这些命令行工具仍然很有用,尤其是在编写脚本和服务器环境中。

对于终端用户而言,直接从 Unix/Linux 命令行进行打印不像以前那么普遍了,但其底层系统和命令仍然具有相关性,尤其是在服务器上或用于自动化任务时。

现代类 Unix 系统通常使用 CUPS (Common Unix Printing System) 作为后端打印服务器。传统的 lp 和 lpr 命令通常充当 CUPS 的前端。

历史上曾用于打印前进行基本文本格式化的 pr 命令,如今已很少使用。现在更倾向于使用现代工具或特定应用程序的格式化功能。

这些命令将文件发送到打印队列等待打印。您的系统管理员通常会配置一个默认打印机。

语法:

$ lp filename(s)
# or
$ lpr filename(s)

示例:将文件 report.txt 打印到默认打印机。

$ lp report.txt
request id is printer_name-123 (1 file(s))

命令通常会返回一个请求 ID (request ID),可用于管理打印作业 (print job)。

常用选项:

  • -d printername (用于 lp) 或 -P printername (用于 lpr):指定特定打印机。
  • -n num_copies (用于 lp) 或 -#num_copies (用于 lpr):打印多份。
# Print 2 copies of status.log to the printer named 'laserjet4'
$ lp -d laserjet4 -n 2 status.log

这些命令显示打印队列中打印作业的状态。

  • lpstat:提供关于打印机和作业的详细状态信息。lpstat -o 通常显示队列中的所有作业。
  • lpq:也显示打印队列,有时格式略有不同。
$ lpstat -o
laserjet4-123 alice 10240 Jul 25 14:10 processing
laserjet4-124 bob 5120 Jul 25 14:11 pending
$ lpq
laserjet4 is ready and printing
Rank Owner Job File(s) Total Size
active alice 123 report.txt 10240 bytes
1st bob 124 notes.txt 5120 bytes

要从打印队列中移除一个作业,使用 cancel (通常与 lp 相关联) 或 lprm (通常与 lpr 相关联)。您通常需要知道作业 ID。

# Cancel job laserjet4-124 using the ID from lpstat
$ cancel laserjet4-124
request "laserjet4-124" cancelled
# Cancel job 124 using the ID from lpq
$ lprm 124

通常,您只能取消您自己的打印作业,除非您是系统管理员 (system administrator)。

mail 实用工具提供了一个基本的命令行界面来发送和阅读电子邮件。虽然它对于简单的任务和脚本编写很有用,但它缺乏现代图形电子邮件客户端(如 Thunderbird, Outlook, Apple Mail)或高级控制台客户端(如 mutt 或 alpine)的功能。

**重要提示:**要使 mail 命令成功将电子邮件发送到外部地址(您自己的系统之外),您的 Unix/Linux 系统需要正确配置邮件传输代理 (MTA),例如 Postfix, Sendmail 或 Exim。此配置通常很复杂,超出了基本使用的范围。

发送语法:

$ mail -s "Subject Line" recipient@example.com

运行此命令后,mail 将等待您输入邮件正文。每行输入后按 Enter。要完成并发送电子邮件,请单独在一行输入一个点号 (.) 并按 Enter,或按 Ctrl + D。

$ mail -s "System Update Notification" admin@example.com
Hi Admin,
The system update process has completed successfully.
Regards,
Automated Script
.
Cc: # Press Enter if no Cc needed

您也可以通过管道将内容直接传输给 mail 命令,或使用输入重定向:

# Pipe the output of a command as the email body
$ df -h | mail -s "Disk Usage Report" sysadmin@example.com
# Send the contents of a file as the email body
$ mail -s "Log File" errors@example.com < /var/log/app_error.log

要检查发送到您本地 Unix 用户账户的收件箱,只需输入:

$ mail

这将显示一个邮件列表和一个简单的提示符,用于阅读、回复、删除等操作。然而,如今大多数用户通过专门的客户端而非 mail 命令的基本阅读界面来管理他们的电子邮件。

mail 命令最适合用于:

  • 从脚本发送简单的通知。
  • 快速发送纯文本消息,不带附件或复杂格式。

对于日常电子邮件使用,请考虑使用:

  • 图形电子邮件客户端(Thunderbird, Evolution, Geary 等)。
  • Webmail 界面(Gmail, Outlook.com 等)。
  • 功能更强大的控制台客户端,如 mutt 或 alpine。