大唐西凉是现在的哪里:基本UNIX命令概览

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 08:17:32
基本UNIX命令概览

可在命令提示符下执行数百条命令。不要感到压抑,虽然可用的命令有许多,但日常使用的不过就是那么几条。本节介绍在UNIX环境下需要使用的基本命令。

注解   如果想使用某条命令的帮助,可在命令提示下输入man以及打算得到帮助的内容。例如,如果输入man date,将会接收到关于date命令的信息以及其他大量资料。详细内容请参阅3.3.1节。

UNIXshell有几个简单、内建的命令。其他命令全都是可执行文件的形式,存放在名为bin(二进制的简写)的特殊目录中。表3-1给出一些需要知道的非常重要的UNIX命令。UNIX命令较为隐晦,但其中一些命令Windows用户应该较为熟悉。例如,命令cd和mkdir在Windows具有与UNIX中相同的意义。许多UNIX命令有扩展其基本功能的额外的选项和开关(就像在MS-DOS中一样),表3-1示出了最有用的命令开关。

表3-1  基本UNIX命令

命  令

说  明

例  子

 

cd

cd命令允许改变目录。其格式为cd new-location。这里给出的例子从当前工作目录转到/tmp目录

$ cd/tmp

$

 

date

date命令给出时间和日期

$ date

Sat Mar 26 16:08:54 CST 2005

$

 

echo

echo命令可在屏幕上显示文本

$ echo Buenos Dias

Buenos Dias

$

 

grep

grep 命令是一个模式识别命令。它允许查看在一个文件或其他命令的输出中是否有某个词或一组词。这里给出的例子中,grep命令检查词“alapati”是否出 现在文件test.txt中(答案为是)。在需要搜索大文件看是否包含特定信息时,grep命令很有用。如果查找的词或词组不在文件中,将简单地返回 UNIX提示,正如下面一个例子中展示的那样

$ grep alapati test.txt

alapati

 

history

history命令给出你或其他用户前面输入的命令。为查看最后3条命令,可输入history -3。显示的默认命令数有赖于特定的操作系统,但通常在15到20之间。输出中,每条命令前面放一个数字,指示返回多少条

$ history –3

4 vi trig.txt

5 grep alaptitest.txt

6 date

7 history-3

[pasx] $

 

passwd

如果第一次分配给你一个账号,你将得到一个用户名和一个密码。可用passwd命令改变你的密码

$ passwd

Changing password for salapati

Old password:

New password:

 

pwd

用pwd命令来找出你现在的工作目录或查看你在文件系统中的当前位置

$ pwd

/u01/app/oracle

$

uname

在给出的例子中,uname命令告诉你机器的符号名为prod5且它是一个HP-UX机器。-a选项告诉UNIX给出系统的所有详细信息。如果省略-a选项,UNIX只显示HP-UX

$ uname –a

HP-UX prod5 B.11.00 A  9000/800

190 two-user license

$

whereis

顾名思义,whereis询问实用程序的可执行文件所在的确切位置

$ whereis who

who: /usr/bin/who

/usr/share/man/man1.z/who.1

$

(续)

命  令

说  明

例  子

which

which命令得出shell正使用的某条命令的版本(可能是多个版本)。在使用某条普通的命令,如cat时,应该执行这条命令,知道其与所预期结果的差别。which命令帮助检查是否使用了正确的命令版本

$ which cat

/usr/bin/cat

who

如果你对除你之外还有谁在系统上感到好奇,可使用who命令。此命令提供登录到系统的所用用户的清单

$ who

salapati           pts/0  nov 8 08:31

rhudson             pts/1  nov 8 09:4

lthomas             pts/3  nov 9 15:54

dcampbel           pts/7  nov 8 16:27

dfarrell           pts/16                    nov 5 07:00

whoami

whoami 命令指出你登录的是哪个用户。这似乎没有什么价值,但作为一个DBA,有时会用几个用户名中的某一个登录系统。最好是确切地知道在某个时刻你用的是哪个用 户,以防止不适当地执行某条命令,如删除文件或目录等。这里给出的例子指出你是作为用户Oracle登录,它是运行在UNIX系统上的Oracle软件的 拥有者

$ whoami

oracle

$

提示  在按下Enter键之前,很有必要检查一下自己是否位于文件结构中的正确位置,以避免执行破坏性的命令。下面的命令将有助于控制你在命令行的输入。在Kornshell下,为了检索到你前面输入的所有命令,可按Esc键,后跟字母k。如果想检索到更早的命令,可连续按字母k,这样会得出以前输入的一系列命令。如果已经输入了许多命令,希望编辑它们,可按Esc键,后跟字母h,或者按字母I转到所输入的命令行。

3.3.1  帮助和信息:man命令

有许多操作系统命令,其大多数都有几个选项。因此,帮助系统嵌在操作系统中是很方便的,你可以方便地得到必要的信息。UNIX和Linux系统两者都有内建的称为man页面的功能,提供了关于所有操作系统命令的很多信息。可输入man命令后跟需要查看的命令得到详细的信息,如下所示:

此命令将显示关于who命令的大量信息及其所有选项,下图是几个例子(见图3-2)。

图3-2  man命令的输出

在基于Linux的系统中,也可以使用灵巧的whatis命令来查看某条命令的功能。与man命令一样,whatis命令也是后跟想查看的命令。下面是一个简单的例子:

正如所见,相对于详细的man页,whatis命令提供了查看命令摘要信息的一个快速、简单的办法。

3.3.2  改变提示符

每种shell都有自己的默认提示符。Korn shell的默认提示为美元符号($)。可通过改变PS1 shell变量的值将其改为别的符号。

在下例中,先发布命令echo$ps1检查ps1变量的值。然后使用export命令设置ORACLE_SID环境变量为我的数据库名finance。再使用export命令将ps1环境变量设置为与ORACLE_SID($ORACLE_SID)环境变量相同。现在shell提示符号已变为我的数据库名finance。因为我只导出了ORACLE_SID变量值,但没有把它置入我的环境文件,所导出的值只在当前会话期间有效。

注解  如果将PS1变量添加到自己的.cshrc文件(3.3.7节的“定制环境”中将要说明如何做这个工作),则每当打开一个新shell时,将显示你定制的提示。如果要通过UNIX管理许多不同的数据库,则改变提示的能力很有用。可修改提示符以反映任何时候你正在工作的数据库。例如,如果你正在库存系统上工作,提示可改为invent>。这样,就不会意外地在某个数据库中执行错误的命令了。

3.3.3  文件和目录的查找

有时你想找某个文件,但不能肯定位于文件系统中的位置。不过,whereis命令只是定位命令,而不是定位文件。为了找到文件或目录在何处,可以使用find命令,如下所示:

在这个例子中,find命令告知bill.sql文件位于/u01/app/oracle/dba目录中。请注意,在find关键字后有一个圆点,表示从当前目录开始递归搜索,当前目录下的每个目录和子目录都要搜索。如果希望从某个特定的目录开始搜索,需要在命令中指出。在下例中,find命令从根(/)目录开始搜索,如果找到则在屏幕上显示test.txt文件的位置:

3.3.4  命令输出的控制

有时,一条命令输出的内容一个屏幕显示不下。有许多办法进行命令输出的控制。

more命令将显示一个文件的内容,一次一屏。按Enter就可以看到文件的下一屏。

管道命令(|)能够将一条命令的输出作为另一条命令的输入。在下面的例子中,|操作符取ps-ef命令的输出(当前系统中运行的进程列表),并传递给grep命令以搜索包含词Oracle的所有进程:

这个例子还演示了如何一次使用多个命令。

3.3.5  显示文件的内容

正如所知,可使用vi编辑器读写一个文件。但有时可能只想看看文件的内容。cat命令可以完成此工作,如下所示:

注解   也可以使用page命令细读文件。

3.3.6  文件相同还是不同

diff命令比较两个文件,返回不同的行,并说明如何使文件相同。下面举一个例子:

此diff命令的输出说明如果增加行New Test到test.one文件,就可以使它与test.two文件相同。第一个字符0为要在test.one中编辑的行号;a指出增加到test.one的行应该与test.two的第一行1相匹配。

3.3.7  UNIX变量

UNIX或Linux系统中主要有两种类型的变量,它们分别是用户创建的变量和shell变量。下面简要地看一下如何使用这两种变量。

1.用户创建的变量

用户可以创建变量并给它一个初始化值。变量中必须包含字母和数字,而且必须以字母打头。也可以使用export命令导出变量,以便在当前会话的任意shell中利用这些变量。

下面举一个用户创建变量的例子(请注意,回显变量本身只显示该变量名而非其值,要显示变量的值,必须在echo命令中的变量名前加一个$符号):

在此例子中,首先创建了一个名为database的新变量,并赋给值nicko。然后用echo命令显示database变量的值,但echo命令只显示字符串database。再次使用echo命令,在变量名前加了$符号($database)。这样做之后,变量database的值显示为nicko。

为了删除database变量的值,设置其为空即可,如下所示:

2.shell变量

shell变量是由shell自己设置值而不是由用户设置值的变量。shell变量也称为关键词变量,因为这些变量中的有一些是用某些简写的关键词来表示的。当第一次登录UNIX系统时,必须使shell得到一些信息,如你的主目录名、用来编辑文本的编辑器以及你的会话活动时系统显示的提示符等。这些东西都是由赋予shell变量的值所决定的。下面是两个常见的shell变量。

q HOME:指定用户的主目录。

q PATH:指出shell执行命令时所要寻找的目录。PATH变量通常含有UNIX和Oracle软件的二进制(bin)目录。

幸运的是,不必每次登录系统时都手动设置环境变量。有一个名为.profile或.loging的文件(具体是哪个文件要看登录的是什么样的UNIXshell)会在登录时自动为所有用户设置环境变量。在登录时,shell将查找合适的文件,并设置所有shell变量的值来建立环境。

3.使用export和setenv命令

用户定义变量和shell变量都局限于第一次声明它们的进程。如果希望从你登录的shell执行的shell脚本中访问这些变量,需要直接令这些变量对子进程的调用环境可用。

在Korn和BASH shell中,可利用export命令使一个变量的值为子进程可用。在C shell中,使用setenv命令完成相同的事情。举一个例子说明如何使用export命令来使一个变量的值为子进程所用:

下面的顺序也能达到与上面的export命令相同的结果:

在C shell中,使用setenv命令来设置变量的值,如下所示:

注解   UNIX程序和命令可以用两种完全不同的方式运行,即交互式方式和批量方式。交互式方式是在登录后直接在屏幕上输入命令;批量方式通常利用UNIX文本文件形式的可执行shell脚本,一次执行所有命令或一个完整的程序。

4.环境的显示

在系统提示下输入env,则所有环境变量将在屏幕上滚动。下面举一个例子:

为了看到某个特定而不是所有(可能会很长)环境变量的值,可使用如下的echo命令要求shell在屏幕上显示该变量的值。

请注意,在此echo命令中,环境变量名的前面放置了一个$,这样命令将显示变量的值而不是变量名。

5.定制环境

Bourne shell和Korn shell都使用.profile文件来设置所有shell变量的值。.profile文件在第一次登录UNIX或Linux系统时执行。

每次调用新的Cshell时,都要执行.cshrc文件。.cshrc文件是一个含有一般的Cshell命令的短文件,它在UNIX风格下仅需微小改动就能起作用。这表示在所有UNIX系统上具有基本相同的.cshrc文件。.cshrc文件在打开UNIX或Linux环境下的终端窗口时执行,或者在执行一个脚本时执行。可在.cshrc文件中添加命令(用类似于vi的文本编辑器),这将使你在UNIX中的工作效率更高。在你登录和启动一个新会话时,Cshell也执行.login文件的内容。.login文件位于用户主目录中,例如对于大多数UNIX系统上的Oracle用户,它位于/home/oracle中。

下面列出各种主要的UNIX和Linux shell下执行的设置shell环境的不同的脚本。

q Bourne shell(sh):用户登录时仅执行.profile文件。.profile文件位于用户的主目录中。

q C shell(cshrc):此shell在执行.cshrc文件后执行.login。在用户登录创建一个新shell时,执行.cshrc脚本,但不执行.login文件。

q Korn shell(ksh):执行用户目录中的.profile文件。

q Bash shell(bash):登录时执行.bash_profile,然后在启动一个新shell时执行.bashrc文件。

为了永久改变环境变量,可编辑.profile或.login文件,对某个变量插入必要的值。例如,可如下对.login文件添加一行:

对于.profile文件,可如下添加行:

这些更改将在下次登录或调用一个C shell实例时起作用。在Bourne shell和Korn shell中,可利用以下的命令立即更改环境:

类似地,可使用C shell中的source命令立即进行环境变量更改:

3.3.8  UNIX中的输入和输出重定向

当在PC或UNIX工作站上使用UNIX窗口时,键盘是输入命令到shell的标准方法,终端是命令输出的标准位置。任何所导致的错误称为标准错误,通常显示在屏幕上。

注解   通常使用术语标准输入、标准输出和标准错误代表UNIX shell中的标准输入和输出位置。

但是,也可以使用文件作为输入,或者让UNIX发送输出到某个文件而不是屏幕。这种改变输入和输出路径的过程称为输入和输出重定向(input and output redirection)。

在不想要输出时,可将输出重定向到一个称为/dev/null的特定位置。如果使用/dev/null作为输出位置,则程序执行中发布的所有消息都被抛弃,并且不在文件系统的任何位置记录。下面的例子给出如何将一个文件的输出重定向到/dev/null,使其内容不可见。

这个例子中的第一条cat命令显示了testfile1的内容。但在cat命令重定向到/dev/null后,cat命令的输出不见了。

注解   cat命令的重定向输出有背于执行此命令的目的,但还有一些别的场合,如执行一个脚本而又不想看到所有命令的输出时,则可以进行输出重定向。

表3-2汇总了多数UNIX版本中的重要重定向操作符。

表3-2  UNIX中的输入/输出重定向

重定向操作符

说  明

重定向标准输入到一个命令

重定向标准输出到一个文件

>> 

将标准输出附加到一个文件

<< 

将标准输入附加到一个文件

2 >

重定向标准错误

在下面的例子中,date命令的输出存储在file1中,而file2又得到file1的输出:

可利用UNIX的管道命令(|)达到相同的结果:

管道命令使用管道符号(|)指出shell取|符号前的命令的输出,将它作为|符号后的命令的输入。

3.3.9  noclobber shell变量

在将输出重定向一个文件时,可用noclobber shell变量来避免意外地覆盖某个已有文件。在启动文件(如.cshrc文件)中包括这个变量是一个很好的办法,如下所示: