Unix系统中常用内置工具的命令使用指南
脚本之家
打印文件
在 UNIX 系统中,您打印一个文件之前,您可能想要重新格式化它调整它的边距,高亮显示一些单词等等。大多数文件也可以打印而不用重新格式化,但未经处理的打印可能不那么好看。
UNIX 系统的许多版本中都包含了两个强大的文本格式化命令,nroff 和 troff。他们不包含在本教程中,但是你可以在在网上查到很多关于讲解这两个命令的使用方式的资料。
pr 命令
pr 命令可以对终端显示屏上或者打印机上显示的文件进行小幅度的格式化。例如,如果在你的文件中有一长串名字,你可以将它格式化成两列或者多列在屏幕上显示。
如下是 pr 命令的语法示例:
pr option(s) filename(s)
pr 命令仅仅只是格式化显示在屏幕上或者打印的副本文件,它不会修改源文件。如下的列表显示一些 pr 命令中可选的参数:
操作 | 描述 |
---|---|
-k | 产生 k 列的输出 |
-d | 将输出用两个空格隔开(并不是所有的 pr 版本适用)。 |
-h "header" | 将下一个项目作为头部信息。 |
-t | 去掉打印中的头部和上/下边距。 |
-l PAGE_LENGTH | 设置一页存放的数据行数为 PAGE_LENGTH(66)。默认的文本行数为 56 行。 |
-o MARGIN | 设置每行之间的间隔为 MARGIN(0) 个空格。 |
-w PAGE_WIDTH | 设置页一行的字符个数为 PAGE_WIDTG(72) 个字符。这个参数仅仅对多文本列输出可用。 |
在使用 pr 命令之前,如下是查看 food 文件的内容:
$cat food
Sweet Tooth
Bangkok Wok
Mandalay
Afghani Cuisine
Isle of Java
Big Apple Deli
Sushi and Sashimi
Tio Pepe's Peppers
........
接着让我们利用 pr 命令将输出变成两列,同时头部显示 Restaruants:
$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 或 lpr 命令,如下示例:
$lp food
request id is laserp-525 (1 file)
lp 命令显示了打印机的 ID,您可以使用它来取消打印作业或检查它的状态。
如果您正在使用 lp 命令,您可以使用 -nNum 选项参数设置打印副本的份数。对于 lpr 命令,您也可以使用参数 -Num 起到相同的作用。
如果有多个打印机连接到共享网络中,对于 lp 命令你可以使用 -dprinter 参数来选择你想使用的打印机,对于 lpr 命令你可以使用 -Pprinter 参数达到相同的效果。这里 printer 值得是打印机的名称。
lpstat 和 lpg 命令
lpstat 命令显示在打印机队列中的作业:请求的 ID,所有者,文件大小,当打印任务被发送给打印机的时候,请求的状态同样也发送了给打印机。
如果你想看到所有输出请求而不仅仅是你自己的,你可以使用 pstat -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
lpg 显示的信息与 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
在第一行显示打印机状态。如果打印机是禁用或纸用完了,你可以在第一行看到不同的信息。
cancel 和 lprm 命令
cancel 命令终止 lp 命令发出的打印请求。lprm 命令终止 lpr 发出的打印请求。您可以指定打印机的 ID (由 lp 或 lpq 发出的请求)或名称来终止打印任务。
$cancel laserp-575
request "laserp-575" cancelled
为了取消当前正在打印的任务,可以忽视它的 ID,仅仅输入 cancel 命令和打印机的名称即可:
$cancel laserp
request "laserp-573" cancelled
lprm 命令将取消活动的工作,如果它属于你。否则,你可以使用工作的编号作为该命令的参数,或者使用破折号(-)删除你所有的工作:
$lprm 575
dfA575diamond dequeued
cfA575diamond dequeued
lprm 命令将会告诉你从打印机队列中删除的任务的文件名。
发送邮件
您可以使用 UNIX 邮件命令发送和接收邮件。如下是发送电子邮件的语法:
$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr
如下是 mail 命令中重要的参数:
参数 | 描述 |
---|---|
-s | 在命令行中指定邮件的主题。 |
-c | 给列表中的用户发送副本。用户列表是由逗号分开的用户名列表。 |
-b | 发送密文副本给列表中的用户。各个列表由逗号分隔开。 |
下面是示例发送测试消息到 admin@yahoo.com。
$mail -s "Test Message" admin@yahoo.com
接下来该输入你的消息部分,消息输入部分是在行首的 “control-D" 的之后。如果想要结束,你仅仅只需要输入一个点类型(.),如下:
Hi,
This is a test
.
Cc:
你可以发送一个完整的文件通过利用重定向 < 操作符,如下:
$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt
为了检查是否有收到邮件,在 UNIX 系统中你可以简单的输入如下的命令:
no email
ping 工具
ping 指令会发送一个应答请求到网络中某个主机。该指令主要用于检测远端主机是否可以正常通信。
ping 指令可以用于如下用途:
追踪并区分硬件或软件的问题。
确定网络和远端主机的状态。
测试、测量或网络管理。
语法
如下是使用 ping 指令的语法:
$ping hostname or ip-address
上述指定会持续打印响应信息。用户可以同时按下 CTRL+C 按键来结束信息的打印.
例子
下面是检测网络中某主机是否可达的例子:
$ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from 74.125.67.100: icmp_seq=1 ttl=54 time=39.4 ms
64 bytes from 74.125.67.100: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 74.125.67.100: icmp_seq=3 ttl=54 time=39.3 ms
64 bytes from 74.125.67.100: icmp_seq=4 ttl=54 time=39.1 ms
64 bytes from 74.125.67.100: icmp_seq=5 ttl=54 time=38.8 ms
--- google.com ping statistics ---
22 packets transmitted, 22 received, 0% packet loss, time 21017ms
rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms
如果某个主机不可达,那么会显示如下信息:
$ping giiiiiigle.com
ping: unknown host giiiiigle.com
FTP 工具
FTP 就是文件传输协议(File Transter protocol)的简称。使用该工具可以帮助用户在主机间上传或下载文件。
FTP 工具拥有自己的 UNIX 指令,可以完成如下任务:
链接并登陆到远程主机。
浏览目录。
列出目录内容。
上传或下载文件。
按照 ascii、ebcdic 或 binary 方式传输文件。
语法
如下是使用 ftp 指令的语法:
$ftp hostname or ip-address
上述指令会触发一个输入账号和密码的登陆界面。如果用户输入的账号和密码认证通过,则用户可以访问相应输入账户的根目录,然后就可以执行多种操作。
下面是一些常用操作:
指令 | 描述 |
---|---|
put filename | 从本地往远程服务器上传文件 |
get filename | 从远程服务器往本地下载文件 |
mput file list | 从本地往远程服务器批量上传文件 |
mget file list | 从远程服务器往本地批量下载文件 |
prompt off | 关闭文件提醒,在 mput 与 mget 时不会每操作一个文件就询问一次。 |
prompt on | 开启文件提醒 |
dir | 列出远程服务器上当前目录下的所有文件 |
cd dirname | 切换本地主机上的目录到指定目录下 |
lcd dirname | 切换远程服务器上的目录到指定目录下 |
quit | 注销当前登陆 |
需要注意的是,上传和下载文件时的本地主机目录都是当前目录。如果用户希望上传或下载文件的目录为特定的目录,那么用户需要先将当前目录切换到指定目录后再进行上传或下载操作。
例子
下面是一些关于 ftp 操作的例子:
$ftp amrood.com
Connected to amrood.com.
220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009)
Name (amrood.com:amrood): amrood
331 Password required for amrood.
Password:
230 User amrood logged in.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 1464
drwxr-sr-x 3 amrood group 1024 Mar 11 20:04 Mail
drwxr-sr-x 2 amrood group 1536 Mar 3 18:07 Misc
drwxr-sr-x 5 amrood group512 Dec 7 10:59 OldStuff
drwxr-sr-x 2 amrood group 1024 Mar 11 15:24 bin
drwxr-sr-x 5 amrood group 3072 Mar 13 16:10 mpl
-rw-r--r-- 1 amrood group 209671 Mar 15 10:57 myfile.out
drwxr-sr-x 3 amrood group512 Jan 5 13:32 public
drwxr-sr-x 3 amrood group512 Feb 10 10:17 pvm3
226 Transfer complete.
ftp> cd mpl
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 7320
-rw-r--r-- 1 amrood group 1630 Aug 8 1994 dboard.f
-rw-r----- 1 amrood group 4340 Jul 17 1994 vttest.c
-rwxr-xr-x 1 amrood group 525574 Feb 15 11:52 wave_shift
-rw-r--r-- 1 amrood group 1648 Aug 5 1994 wide.list
-rwxr-xr-x 1 amrood group 4019 Feb 14 16:26 fix.c
226 Transfer complete.
ftp> get wave_shift
200 PORT command successful.
150 Opening data connection for wave_shift (525574 bytes).
226 Transfer complete.
528454 bytes received in 1.296 seconds (398.1 Kbytes/s)
ftp> quit
221 Goodbye.
Telnet 工具
用户在工作经常会遇到这样的需求:用户需要连接到远程 UNIX 主机且需要在远程主机上进行操作。Telnet 就是一个允许用户对远程服务器进行连接、登陆且可以进行远程操作的工具。
一旦用户使用 Telnet 工具登陆到了远程服务器上,那么用户就可以像在本地主机操作那样操作远程服务器来执行任务。下面是 Telnet 对话的一个例子:
C:>telnet amrood.com
Trying...
Connected to amrood.com.
Escape character is '^]'.</p> <p> login: amrood
amrood's Password:
*****************************************************
* *
* *
*WELCOME TO AMROOD.COM *
* *
* *
*****************************************************</p> <p> Last unsuccessful login: Fri Mar 3 12:01:09 IST 2009
Last login: Wed Mar 8 18:33:27 IST 2009 on pts/10</p> <p> { do your work }</p> <p> $ logout
Connection closed.
finger 工具
finger 指令用于显示指定主机上有关用户的信息。这里的主机可以是本地主机,也可以是远程服务器。
由于安全原因,finger 也能在其他系统中使用。
下面是使用 finger 指令的简单语法。
检测本地主机中登陆用户的信息的例子如下:
$ finger
Login Name Tty Idle Login Time Office amrood pts/0 Jun 25 08:03 (62.61.164.115)
获取本地主机上指定有效用户的信息的例子如下:
$ finger amrood
Login: amrood Name: (null)
Directory: /home/amrood Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.
检测远程服务器中所有登陆用户的信息的例子如下:
$ finger @avtar.com
Login Name Tty Idle Login Time Office
amrood pts/0 Jun 25 08:03 (62.61.164.115)
获取远程服务器上的指定有效用户信息的例子如下:
$ finger amrood@avtar.com
Login: amrood Name: (null)
Directory: /home/amrood Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.