分享
 
 
 

Solaris高级系统管理员指南 (5)

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

第7章、UNIX的shell命令

本章将介绍:各种shell解释器共同点、标准shell介绍、C shell介绍、Korn shell介绍。

在Solaris 2.x软件环境中提供给用户三种命令解释器:标准shell(缺省shell或Bourne shell,本手册中我们称为标准shell)、C shell和Korn shell。对每一个用户而言都有一个缺省的shell命令解释器,另外也可以在命令行中打入某种shell而重新进入另外一种shell解释器。本章首先介绍三种shell的公共命令,然后再分别对它们各自的特性作一些详细介绍。

7.1各种shell的公共命令

本节描述各种shell所使用的命令

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

表7.1 各种shell解释器的基本特性

特性 Bourne C Korn

别名 无 有 有

命令编辑 无 有 有

增强的cd 无 有 有

历史 无 有 有

忽略CTRL-D 无 有 有

不同于profile的初始文件 无 有 有

作业控制 有 有 无

退出文件 无 有 有

文件的重写保护 无 有 有

与标准shell的语义兼容性 是 否 是

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7.1.1设置某种缺省shell

在用户数据库或/etc/passwd文件中,注册shell是在每个用户的登记项的最后一列中设置,用户可以使用系统提供的管理工具或编辑本地的/etc/passwd文件来修改注册shell,但是此用户必须是sysadm组的成员,即用户的组号(GID)应该是14,如果是在运行NIS+,则必须有建立和删除NIS+数据据库的权限。

下面是用户更改注册shell的一些步骤:

1、按需要,从管理工具中打开数据库管理器窗口。

2、 在用户数据上,按下SELECT,然后再接着按SELECT来选择NIS+或无NIS+服务。若选择NIS+则编辑Passwd数据库,否则编辑本地的/etc/passwd文件。

3、 点击Load键,显示用户数据库窗口。

4、 在想要编辑的用户项上按SELECT鼠标键,然后从编辑(Edit)菜单中选择修改(Modify)项。

5、 修改shell项的文字域,/bin/sh是标准shell,/bin/csh是C shell或者输入/bin/ksh作为Korn shell。

6、 点击Modify按钮,修改用户缺省SHELL定义,只要用户重新注册进入系统,即使用新的shell。

7.1.2在命令行中改变shell类型(sh,csh,ksh)

如果用户不修改用户数据库而想使用别的shell解释器,则可以在命令行中简单地打入所需shell的命令名即可。

例如,要想使用C shell,打入csh即可,缺省C shell提示符是在系统名之后跟一个百分号(%)。

$csh

gtxa%

如果要改变为Korn shell,则打入ksh,korn shell的缺省提示符是$

gtxa%ksh

$

7.1.3从shell解释器中退出(exit)

如果用户是在命令行中进入某种shell解释器,则只需打入exit和回车键,即可退出当前的shell解释器,而返回原先的shell解释器。

$exit

gtxa%

7.1.4清除一个shell窗口(clear)

在某个shell窗口中,用户可以清除一个shell窗口的内容,并且重新显示shell的提示符到此窗口的左上角,例如要清除一个窗口的内容,可以打入clear和回车键:

gtxa%which openwin

no openwin in. /home/ignatz/usr/deskset/bin/usr/bin

/home/ignatz/bin/bin/home/bin/etc/usr/etc/usr/etc/usr/ucb

/usr/bin

gtxa%clear

此时窗口的显示内容即被清除,然后把提示重新显示在顶部。

7.2标准shell

在Solaris 2.x软件环境中,标准shell(Bourne shell)是缺省shell,它是由Steve Bourne先生在AT&T Bell实验室工作时开发的,标准shell相对而言,结构紧凑,而且简单,但它也提供所有的程序设计功能,可以实现由各种命令和过程组成的shell文件(script)。因为如何编写shell文件已经超越本文范围,所以我们不在此赘述。

7.2.1标准shell的初始文件

标准shell只使用一个初始执行文件,其名为.profile,一般放在用户的基目录(home directory)之下,它专门用来设置用户的环境。当用户注册或在命令行中启动标准shell时,即读.profile文件,一般来说,用户通过此文件来设置用户查找路径和其它环境变量。

7.2.2定义标准shell的环境变量

对于标准shell和Korn shell而言,定义环境变量的语法都是一样的,输入命令=; export,例如:

$HZ=100;export HZ

$

7.3 C shell

C shell是Bill Joy先生在UCB工作学习时开发的,它已被UNIX的众多用户所接受。C shell完全不同于标准shell和Korn shell,而且有自己独特的语法规则,C shell最重要的优点是具有历史功能、命令编辑功能和别名功能。历史功能的意义是C shell可以存贮用户最近输入的命令记录,用户可以显示这些命令,也可以按原样重新使用某条命令;而编辑功能是用户可以通过编辑来改变某条命令;别名可以让用户用短的名字来表示经常使用的长命令,或几条常用命令。

7.3.1C shell的初始文件

C shell使用两个初始化文件,用于设置用户的环境变量,这两个初始文件名分别是.login和.cshrc,也放在用户基本目录之下。

当用户注册时,C shell首先读.login,然后再读.cshrc文件。当用户是从命令行中启动C shell时,只读.cshrc文件(C shell运行控制)。因为.login文件不是每次启动C shell都读入,因此用户应该在.login中设置环境变量,而在.cshrc文件中设置用户的查找路径名。

7.3.2C shell环境变量的定义

使用命令setenv ,例如:

gtxa%setenv display rogue:0

gtxa%

7.3.3建立C shell的别名

用户可以在.cshrc文件中定义所需的别名。建立一个别名的语法为:

alias

例如,你想简写别名(alias)这个命令成为a,则可以在.cshrc文件加入下列一行:

alias a alias

下面的实例选自.cshrc文件。注意,如果命令行中包含有空格,则必须把整个命令中用引号引起来,引号可以是双引号,也可以是单引号:

alias a alias

a h hiostory

a c clear

a lf 1s -F

a ll "ls -l | home"

a la ls -a

a s "source .cshrc"

a f ‘find -name core -print'

a copytotape "ter cvf /dev/rmt/0 *"

7.3.4设置C shell的历史功能

要设置C shell的历史功能,只需在命令行中打入:

set history=

其中,n可理解为C shell可以存贮的命令条数。举例:

gtxa%set history=18

gtxa%

用户既可在shell窗口中"临时"设置历史功能,也可以把它放在.cshrc文件中设置"永久"的历史功能。

7.3.5使用C shell历史功能

在命令行中,打入history命令,即可显示已经打入过的命令,这些命令是你打入的最后n条命令,n是像7.3.4节所述的方法设置的。

gtxa%history

26 pwd

27 kermit

28 cd howto

29 tar avf /dev/rmt/0

30 ls -l howto*

31 cd

32 cd Config/Art

33 ls -1

34 tar cvf /dev/rmt/0

35 histoty

gtxa%

要想重复执行刚打入的命令,可打入!!和回车,即复执行上一条命令:

gtxa% history

26 pwd

27 kermit

28 cd howto

29 tar avf /dev/rmt/0

30 ls-l howto*

31 cd

32 cd Conrig/Art

33 ls-1

34 tar cvf /dev rmt/0

35 histoty

gtxa%!!

history

27 kermit

28 cd howto

29 tar avf /dev/rmt/0

30 ls-l howto*

31 cd

32 cd Conrig/Art

33 ls-1

34 tar cvf /dev rmt/0

35 history

36 history

gtxa%

要重复最后一条命令的最后一个词,可打入!$,这样上一条命令的最后一个词即可作为当前命令行中的一个变量。例如,你可能已经输入了某个文件的全程路径,然后想用这个路径名作为变量,来用vi编辑此文件或打印此文件:

gtxa%ls -l /home/ignatz/quest

gtxa%lp !$

gtxa%

!$可以用在命令行的任何地方,在下面的命令行中,文件/home/ignatz/quest将拷贝到/tmp目录之下:

gtxa%ls -1 /home/ignatz/quest

gtxa%cp !$ /tmp

cp /home/ignatz/quest /tmp

gtxa%

要想重复C shell历史令表中的某个序号的命令,则打入!,例如:

gtxa%history

29 tar avf /dev/rmt/0

30 ls -l howto*

31 cd

32 cd Config/Art

33 ls -1

34 tar avf /dev/rmt/0

35 ls -l

36 cd

37 lp howto*

38 history

gtxa%!32

cd Config/Art

gtxa%

7.3.6设置C shell的退格键(stty erase)

如果用户想把删除字符的键从Delete键变为Backspace键,则可以输入下面的命令:

gtxa%stty erase ^H

gtxa%

此后,退格键(Backspace)即作为字符删除键使用。

7.3.7新命令的嵌入

C shell为所有命令路径变量建立一个内部命令表,因此当用户把新命令放入某个目录中时,这个新命令并不在这个表中,这样,C shell就不会执行此新命令。C shell为了解决这个问题,把用户的新命令加入到查找路径内部表中,为用户提供了rehash命令,用户只需打入rehash命令,即可使这条新命令有效:

gtxa%newcommand

newcommand: Command not found

gtxa%rehash

gtxa%newcommand

gtxa%

7.3.8Cshell历史命令的编辑

用户可以从C shell的历史表中编辑命令,其语法:

S//

下面我们举例说明:

gtxa% history

31 cd

32 ls

33 cd/home/frame3.1

34 ls

35 cd

36 tar cvf /dve/rmt/0 frame3.1

37 lp questionnaire

38 lpstat -t

39 echo $PaTH

40 history

gtxa%!39:s/a/A/

echo $ PATH

.:/home/winsor:/usr/openwin/bin:/usr/deskset/bin:/home/

winsor/bin:/bin:/home/bin:/etc:/usr/etc:/usr/bin:/home/

frame3.1/bin

gtxa%

在此例中,第39条命令行中用户打错了一个字母,然后用户用C shell编辑命令改正了打错的那个字母,命令执行也就正常了。

7.4 Korn shell

Korn shell是AT&T Bell实验室的David Korn开发的,是标准shell超集,Korn shell使用标准shell一样的语法,只不过Korn shell本身又加入了许多新的功能, Korn shell 比C shell提供了更加方便的命令编辑方式,Korn shell一样亦具有历史和别名功能。

7.4.1Korn shell的初始化文件

korn shell使用两个初始文件,它们都存放在用户的基目录之下,其名分别为.profile和.,第二个文件名是可以让用户自己选择命名的,其主要功能是设置环境,同C shell类似,你可以把第二个文件名选择为.kshrc,以后我们即用.kshrc这个名称来说明第二个文件。

当用户注册时,Korn shell首先读.profile文件,然后读.kshrc。.kshrc主要让用户建立使用Korn shell的习惯约定,在.kshrc应该包括只有Korn shell才能执行的命令。

用户必须用ENV环境变量来指定这.文件的名称,Korn shell设置环境变量的命令语法同标准shell:

=;export

其中export命令是必须的,它使此变量对Korm shell以及它的所有子进程都有效,下面为.kshrc文件设置环境变量:

$ENV=$HOME/.kshrc;export ENV

$

很显然,用户必须将ENV这个环境变量在.profile中设置好,否则当用户注册时,Korn shell就会找不到.kshrc文件。注意,ENV环境变量是没有缺省设置的,用户不设置ENV,就不能使用这此性质。

不论是在注册时,还是在命令行中启动Korn shell,.kshrc文件在每次启动Korn shell时都必须读入。

7.4.2Korn shell的选择项

Korn shell有许多变量可用来指定用户的环境和控制命令的执行,要想显示当前的选择项设置情况,可输入:

$set -o

下例显示了Solaris 2.x软件系统中Korn shell的缺省设置情况:

$set -o

Current option settings

allexport off

bgnice on

emacs off

errexit off

gmacs off

ignoreeof off

interactive on

keyword off

markdirs off

monitor off

noexec off

noclobber off

noglop off

nounset off

privileged off

restricted off

trackall off

verbose off

vi off

viraw off

xtrace off

$

我们在表7.2中说明这些缺省选择项的具体意义。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

表7.2 Korn shell的选项

选择 缺省值 说明

allexport off 当定义时,自动地报告变量

bgnice on 要低优先级执行所有的后台作业

emacs off 设置emacs/gmacs为联机编辑器

errexit off 如果命令返回伪值,则shell执行ERR陷井并立即 退出

gnaces off 设置gmacs/gmacd为联机编辑器

ignoreeof off 当运行在交互式shell 时,则在文件的未尾也不退出shell,只有打入exit才退出shell

interactive on shell自动进入交互式方式,因此也立即显示shell提示符

keyword off shell根据变量赋值语法将每个字放入变量赋值表中

markdirs off 在所有目录名后显示一个"/"

monitor on 使能作业控制

noclobber off 当使用转向输出>时,不覆盖一个已经存在的文件

noexec off 只读此命令,而不执行它,利用此命令可以调试shell文件的语法错误

noglob off 取消文件名的扩充

nolog off 在历史文件中不存贮功能定义

nounser off 当shell想要扩展一下已经设置的变量时,显示一条错误信息

privilrged off 当此选择项是off时,使用实际UID和GID,若是on,则把UID和GID设置成启动此shell时有效值

restricted off 设置一种受限制的shell

trackall off 当命令第一次出现时,使得它成为别名

verbose off 当读入时,即是显示输入

vi off 设置vi为联机的编辑器

viraw 0ff 指定从vi中,每次只输入一个字符

xtrace off 当执行命令的变时时,显示它们

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按照korn shell的习惯用法,这些选择都在.kskrc文件中设置。

要想使某选择项有效,可输入:

set -o

若要取消这个选择项,可输入:

set +o

例如在.kshrc中输入:

set -o vi

即设置联机编辑器为vi,而是如果是下面这一行:

set +o vi

则是关闭vi作为联机编辑器使用。

用户亦可以用同样的语法,在命令行中设置Korn shell的其它选择项。

7.4.3创建Korn shell的别名

Korn shell创建别名的语法是:

Alias =

例如把别名命令alias别名为a,其命令为:

$alias a=alias

$

Korn shell本身带有一些预先定义好的别名,要显示这张别名表,只需打入alias命令即可:

$alias

autoload=typeset -fu

false=let 0

functins=typeset -f

hash=alias -t -

history=fc -1

integer=typeset -i

nohup=nohup

r=fc -e -

stop-kill-STOP

suspend=kill -STOP $ $

true=:

type=whence -v

$

表7.3描述这些缺省别名的意义。

表7.3 Korn shell缺省别名

别名 值 定义

autoload typeset -fu 定义一个自动装入函数

false let -0 返回非零状态,经常用于产生无限循环

functions typeset -f 显示函数表

hash alias –t - 显示跟踪别名表

history fc -1 从历史文件中列出命令

integer typeset -i 整型变量的说明

nohup nohup 即使退出系统(log out),也继续执行正在运行的作业

r fc -e- 重复执行前面的命令

stop kill -STOP 停止作业

suspend kill -STOP$$ 挂起作业

true ; 返回一个零退出状态

type whence-v 显示命令的信息

7.4.4用Korn shell的联机编辑器编辑命令

使用Korn shell的联机编辑器,用户在执行命令以前可以编辑当前命令。Korn shell的联机编辑器可以是emacs、gmacs或vi,利用Korn Shell的选择项功能,使用下面命令:

set -o

或使用EDITOR或VISUAL环境变量来设置联机编辑器。

Korn shell的在线(或联机)编辑器vi是普通vi程序改进后的子集,使用联机vi编辑器时会自动进入插入方式。

用户在一般情况之下,不需要使用联机vi编辑器,而可直接打入命令并执行之。如果想要编辑某个命令,则打入Escape键进入命令方式,用户可以使用标准的光标移动命令向前移动,也可以使用vi编辑命令编辑这一行的内容。当用户在编辑命令时,按回车即执行此命令,而打入Escape则是回到输入方式。如果用户想要编辑的命令行是在一个vi文件中,则打入v命令即可打开一个含有命令行的

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有