linux的学习系列 6---打印文件和发送邮件

时间:2022-10-30 00:27:56

文件打印

如果你希望打印文本文件,最好预先处理一下,包括调整边距、设置行高、设置标题等,这样打印出来的文件更加美观,易于阅读。当然,不处理也可以打印,但是可能会比较丑陋。

大部分的Linux自带了 nroff 和 troff 两个强大的文本格式化工具,不过比较老旧,使用的人很少,有兴趣的读者可以可以自行学习,本教程不再进行深入讲解。

pr命令

pr 命令用来将文本文件转换成适合打印的格式,它可以把较大的文件分割成多个页面进行打印,并为每个页面添加标题。

pr 命令的语法如下:

pr option(s) filename(s)

pr 命令仅仅改变文件在屏幕上的显示样式和打印输出样式,并不会更改文件本身。下表是 pr 命令的几个选项:

选项 说明
-k 分成几列打印,默认为1。
-d 两倍行距(并不是所有版本的 pr 都有效)。
-h "header" 设置每个页面的标题。
-t 不打印标题和上下边距。
-l PAGE_LENGTH 每页显示多少行。默认是每个页面一共66行,文本占56行。
-o MARGIN 每行缩进的空格数。
-w PAGE_WIDTH 多列输出时,设置页面宽度,默认是72个字符。

例如,food 文件包含了很多食品的名字,使用 pr 命令分成两列打印,并设置每页的标题为“Restaurants”。

首先查看文件内容:

$cat food
Sweet Tooth
Bangkok Wok
Mandalay
Afghani Cuisine
Isle of Java
Big Apple Deli
Sushi and Sashimi
Tio Pepe's Peppers
........
$

然后使用 pr 命令打印:

$pr -2 -h "Restaurants" food
Nov 7 9:58 1997 Restaurants Page 1 Sweet Tooth Isle of Java
Bangkok Wok Big Apple Deli
Mandalay Sushi and Sashimi
Afghani Cuisine Tio Pepe's Peppers
........
$

lp和lpr命令

lp 和 lpr 命令将文件传送到打印机进行打印。使用 pr 命令将文件格式化后就可以使用这两个命令来打印。

打印机一般由系统管理员来设置,下面的例子使用默认的打印机打印food文件:

$lp food
request id is laserp-525 (1 file)
$

命令成功执行会返回一个表示打印任务的ID,通过这个ID可以取消打印或者查看打印状态。

如果你希望打印多份文件,可以使用 lp 的 -nNum 选项,或者 lpr 命令的 -Num 选项。Num 是一个数字,可以随意设置。

如果系统连接了多台打印机,可以使用 lp 命令的 -dprinter 选项,或者 lpr 命令的 -Pprinter 选项来选择打印机。printer 为打印机名称。

对lp的命令的参数的说明:

1.作用

lp是打印文件的命令,使用权限是所有用户。

2.格式

lp [-c][-d][-m][-number][-title][-p]

3.主要参数

-c:先拷贝文件再打印。
-d:打印队列文件。
-m:打印结束后发送电子邮件到用户。
-number:打印份数。
-title:打印标题。
-p:设定打印的优先级别,最高为100,默认是50。

4.应用实例

(1)使用lp命令打印多个文件

#lp 2 3 4

request id is 11 (3 file(s))

其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。

(2)设定打印优先级别

#lp lp -d LaserJet -p 90 /etc/aliases

通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50。

lpstat 和 lpq 命令

lpstat 命令可以查看打印机的缓存队列(有多少个文件等待打印),包括任务ID、所有者、文件大小、请求时间和请求状态。

提示:等待打印的文件会被放到打印机的的缓存队列中。

例如,使用 lpstat -o 命令查看打印机中所有等待打印的文件,包括你自己的:

$lpstat -o
laserp-573 john 128865 Nov 7 11:27 on laserp
laserp-574 grace 82744 Nov 7 11:28
laserp-575 john 23347 Nov 7 11:35
$

lpstat -o 命令按照打印顺序输出队列中的文件。

lpq 命令显示的信息与 lpstat -o 稍有差异:

$lpq
laserp is ready and printing
Rank Owner Job Files Total Size
active john 573 report.ps 128865 bytes
1st grace 574 ch03.ps ch04.ps 82744 bytes
2nd john 575 standard input 23347 bytes
$

第一行为打印机的状态。如果打印机无法使用或者纸被用完,将会输出其他信息。

lpq命令用于显示打印队列中的打印任务的状态信息。

-E:强制使用加密方式与服务器连接;

-P:显示中的打印机上的打印队列状态;;

-U:自动可选的用户名;

-a:报告所有打印机的定义任务;

-h:指定打印服务器信息;

-l:使用长格式输出;

+:指定显示状态的间隔时间。

来自: http://man.linuxde.net/lpq

来自: http://man.linuxde.net/lpq

cancel 和 lprm 命令

cancel 和 lprm 分别用来终止 lp 和 lpr 的打印请求。使用这两个命令,需要指定ID(由 lp 或 lpq 返回)或打印机名称。

例如,通过ID取消打印请求:

$cancel laserp-575
request "laserp-575" cancelled
$

如果希望取消正在打印的文件,那么可以不指定ID,仅仅指定打印机名称即可:

$cancel laserp
request "laserp-573" cancelled
$

lprm 命令用来取消当前用户的正在等待打印的文件,使用任务号作为参数可以取消指定文件,使用横线(-)作为参数可以取消所有文件。

例如,取消575号打印任务:

$lprm 575
dfA575diamond dequeued
cfA575diamond dequeued
$

lprm 会返回被取消的文件名。

发送邮件

可以使用mail命令发送和接收邮件,语法如下:

$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

每个选项的含义如下:

选项 描述
-s 邮件标题。
-c 要发送的用户,多个用户以逗号(,)分隔。
-b 需要密件发送(密送)的用户,多个用户以逗号(,)分隔。

例如,向admin@yahoo.com发送邮件:

$mail -s "Test Message" admin@yahoo.com
Hello everyone,
this is Linux tutorial and url is http://see.xidian.edu.cn/cpp/linux/.
Cc:

第一行是输入的命令,-s表示邮件的主题,后面的admin@yahoo.com则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,你可以输入任何文字,比如上面的两行。输入完邮件正文,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

也可以通过重定向操作符 < 来发送文件:

$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt

通过上面的命令,就可以把demol.txt文件的内容作为邮件的内容发送给admin@yahoo.com了。

接收邮件不需要任何参数:

$mail
no email

linux的学习系列 6---打印文件和发送邮件的更多相关文章

  1. Linux 系统化学习系列文章总目录(持续更新中)

    本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...

  2. linux的学习系列 10---vi

    Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能. ...

  3. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  4. 在Linux下使用命令行打印文件

    近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...

  5. linux的学习系列 2--文件系统

    Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录.目录是一种类似于树的结构,称为文件系统. 当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建 ...

  6. linux的学习系列 1---简介

    Linux简介 严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台:Linux的全称是GNU/Linux,这才算是一个真正意义上的Linu ...

  7. Linux 编程学习笔记----ANSI C 文件I&sol;O管理

    转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 依据数据存储的方式不同,能够将文件分为文本文件和二进制文件 ...

  8. linux的学习系列 8---进程管理

    当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中的程序 ...

  9. linux的学习系列 7---管道和过滤器

    有时候,我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做管道.为了建立管道,需要在两个命令之间使用竖线(|)连接. 管道是Linux进程之间一种重要的通信机制:除了管道,还有 ...

随机推荐

  1. ios 添加伪闪屏

    self.window.rootViewController.view.alpha = ; UIImageView *splashImageView = [[UIImageView alloc]ini ...

  2. 用TPP开启TDD的easy模式

    Test-Drived Development 测试驱动开发三步曲:写一个失败的测试用例->编写生产代码通过这个测试用例(transformation)->重构(refactor).重构是 ...

  3. ubuntu 安装bochs

    //首先官网下载bochs源码wget http://bochs.sourceforge.net/svn-snapshot/bochs-20150503.tar.gz//然后解压 tar vxzf b ...

  4. &lbrack;mr440&rsqb; 崎岖的山区

    极类似动归的广搜?反正各种算法傻傻分不清…写之前叹了一句,好久不写广搜了啊!呵呵真的写了好久,大约一个钟头? f[i,j,0]表示到点(i,j)且最后一步为下降的最少步数,f[i,j,1]就是上升.莫 ...

  5. 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离

    在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ...

  6. 关于分页器border重叠问题

    .paging li { cursor: pointer; display: inline-block; float: left; box-sizing: border-box; margin-lef ...

  7. linux下的启停脚本

    linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...

  8. Android实现两次点击返回键提示退出

    Android的很多app中,都有点击一次返回键提示再次点击退出app的功能. 今天就看了下实现的方式,其实就是在相应的Activity中重写了onKeyDown()方法.在onKeyDown()方法 ...

  9. jenkins3

    Jenkins是基于java开发的. GitHub Git (熟练使用) Doocker (了解) Jenkins (熟练使用) Django (熟练使用) Angularjs (了解) Sentry ...

  10. windows下在idea用maven导入spark2&period;3&period;1源码并编译并运行示例

    一.前提 1.配置好maven:intellij idea maven配置及maven项目创建 2.下载好spark源码: 二.导入源码: 1.将下载的源码包spark-2.3.1.tgz解压(E:\ ...