基本UNIX命令集介绍
Unix命令集是很有特色的命令集。它被设计成用来全面控制UNIX的机器。这部分将对UNIX命令集的一部分进行讨论。本部分与后面重点讲述经常用于传输控制协议(TCP)和Internet协议(IP)的UNIX命令。请注意我们要讨论的仅是UNIX中最常用的命令而不是对它的命令作一通览。后面每一部分都对命令集的一个命令进行介绍。在本章的最后,您还会学到黑客们经常用来侵入服务器的命令。
1.匹配符
在谈到命令时,如果该命令对应的文件不在当前目录内,UNIX将要求您使用路径名调用本命令。大多数命令都不在您所处的目录内而是在系统的其他某个地方。另外大多数UNIX系统允许您使用匹配符(wildcard)来访问文件或目录。(表1)列出了UNIX中常用的匹配符。
2.重定向字符
大多数UNIX命令和程序从键盘接受输入并将输出送至屏幕。但对大多数命令来说您也可以将他们的输入定向至文本文件并将其输出重定向至另一个文件。例如:假设有一个程序叫encrypter。它从键盘输入获取,并进行加密,最后显示在屏幕上。您可以重新改变其输入。比如从一个预先定义的文件,要进行输入重定向可以使用字符“〈。
在UNIX中,您可以通过键入它的名字来执行该程序。如果您想重定向输入至一个文件,则您也可将要重定向至的文件名放在重定向符后面。例如:如果文件叫:Top_secret,您应该如下键入命令:encrypter < top_secret,程序将从文件top_secret输入并加密最后输出至屏幕上。
另一方面,您也许想让encrypter加密文件然后单独存储起来。这时您就可将输入重定向至另一个文件。要进行这一步工作,可使用输出重定向字符“>,如果想存入private文件,则应如下键入:encrypter < top_secret > private。
Encrypter加密程序将从文件top_secret中读取其内容并进行加密,然后将结果输出至文件private中。程序将不会往屏幕上写任何东西。
在使用重定向字符时,如果重定向输出的字符不存在,shell将会创建该文件。如果该文件已经存在,shell将会覆盖该文件而代之以加密后的内容。
如果您不想覆盖该文件的内容,您可以使用Unix的重定向追加字符“> >。它会将加密结果追加至已存在的private文件的尾部:encrypter < top_secret> >private。
当然如果private不存在,shell将创建它。
3.掌握命令行选项
大多数UNIX命令都有多个选项或开关,您可以用来定义命令的不同形式。可以在命令行中命令后加入这些选项,一般使用一个破折线。例如:假设encrypter程序有一个选项叫X,它可以给encrypter选不同的加密算法。这样我们可以对encrypter的运行进行一下简单的配置,使用encrypter -X。如果一个命令有多个选项,则可以顺次加进输入流中。例如:encrypter有两个命令选项:x和y。则您可以按如下的方式键入命令encrypter _xy,如果您在程序中这样定义的话。但一般将其分开,即如下键入:encrypter _x _y。
4.通道符介绍
经常地,您想使用通道将一个命令或程序的输出传送到另一个的输入。在Unix中,可使用管道符“|来完成两程序的联接。例如:如果使用一个叫report的命令将文档格式化为report格式。如果您有一个想以report格式浏览的文件myreport,则您可如下操作:
cat myreport | report
这个命令符会将myreport文件送给report命令处理,而不是直接显示在屏幕上。然后reporte命令继续处理并最终以report格式显示在屏幕上。
5.掌握后台处理
您可能选择只是在后台执行一个命令和程序。也就是说您可以让she11执行它,但同时您还可以做许多别的事情。在后台执行的命令,如同正常命令一样键入,只不过需要在它后面加上“&字符。例如:如果要想在后台删除所有目录中的文件则如下键入:
$rm * &
在执行命令后,您仍然可以运行别的任务,当在后台执行任务时,系统将显示一个数字,然后返回到命令提示符下。系统生成的数字是命令的进程标识符。进程标识符是很重要的,因为您可以使用它来查看进程表以确定命令是否仍在运行。后面将对之进行讨论。
注意:在您进行后台处理时,命令或程序仍可以从键盘取得输入并将送至屏幕。如果您不想在一个命令或程序在后台处理期间干扰您的工作,您可以使用重定向。
6.掌握ping命令
管理一台服务器时,您也许会经常向远程服务器发送一些命令。但在发送命令之前,必须先同该服务器建立连接以确保其正在运行。这时,您可以使用ping命令发送 Internet Control Message Protocol(ICMP)包给另一台主机。ping命令将使用 ICMP的 ECHO_ REQUEST命令传输这些包。之后,ping将等待一个ICMP的ECHO_REQUEST回应,它与所发送的包一 一对应。如果ping的一个地址没有回应,则说明该服务器不存在或没有运行。例如:如果您同jamsa ping 连接,则会收到一个类似于下面的回应:
$ Ping Jamsa
ping jamsa(192.159.234.12):56 data bytes
64 bytes from jamsa(192.159.234.12):TCMP_SEQ=0 ttl=254 time=10ms
64 bytes from jamsa(192.159.234.12):TEMP_SEQ=0 ttl=254 time=10ms
64 bytes from jamsa(192.159.234.12):TCMP_SEQ=0 ttl=254 time=10ms
64 bytes from jamsa(192.159.234.12):TCMP_SEQ=0 ttl=254 time=10ms
64 bytes from jamsa(192.159.234.12):TCMP_SEQ=0 ttl=254 time=10ms
Jamsa ping statistics
4 packets transmitted,4 packets received,0%packet lost round_trip min/avg/max=10/10/10ms
$
ping命令支持的一些附加的命令集可用来确定TCP/IP连接中的潜在的问题。
(表2)列出了几个ping命令的选项及它们的含义:
表2 ping的命令选项
7.finger命令的介绍
在前面部分中,我们讨论了如何使用ping命令以确定远程服务器在运行。在多数情况下,我们可能想确切知道谁正与远程服务器连接、从哪儿注册的信息。这时,我们可以使用finger用户信息接口来获得关于远程服务器的信息。
在Unix服务器或终端上,我们可以使用finger命令来获得finger用户信息接口。finger命令将返回在目标服务器上所有当前的用户的列表。在大多数UNIX中,列表将包括用户的注册名、全名、昵称、空闲时间、注册时间、办公地点、电话号码(服务器如果知道电话号码的话),您也可以使用finger 命令获得一些特定用户的信息而不是所有用户。为了获得关于一个用户的登录信息,可以如下操作:
$ finger lklander
login name:lklander(message off) In real lifte:lars Klander
Directory:/u/lklander shell:/bin/ksh
on since Sep 22 22:06:35 on ttyp0
No plan
$
同ping命令一样,finger命令也支持几个选项。表1-9列出了这些选项的一个列表。
由于finger 命令可以被任一个登录的用户使用,而且它可以提供许多重要的信息,一般情况下,系统管理员应将该命令禁止,以防黑客使用它获得用户信息。