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