Chinaunix首页 | 论坛 | 博客
  • 博客访问: 194981
  • 博文数量: 49
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-08 16:23
文章分类

全部博文(49)

文章存档

2012年(8)

2011年(34)

2008年(7)

分类:

2011-05-10 22:29:08

stty命令用来设置终端选项;
trap命令是一个信号处理命令;
clear命令清空屏幕;
umask命令用来确定文件和目录被创建时的初始权限;
lp是打印机命令

以下是基于Bourne shell基础环境下的知识

/etc/profile文件是一个系统级的初始化文件,由系统管理员进行设置,在用户登录时执行指定的任务。
.profile文件是用户定义的初始化文件,保存在每个用户的主目录下,用户登录时shell会把它执行一遍,这个文件提供了定制和修改shell环境的功能。
Bourne shell提供了两种提示符:主提示符即美元符号($),变量PS1;次提示符即一个向右的尖括号(>),变量PS2。

主提示符和次提示符可以重新设定;通常,提示符是在用户的初始化文件.profile中定义的。
通常推荐在文件.profile中设置搜索路径;
搜索路径保存在PATH中,它是个由冒号分隔的目录列表;

hash命令用于控制系统内部的一个哈希表,shell将用这个表来提高命令查找的效率。hash命令的输出结果显示了shell通过该表找到某条命令的次数(hits),以及查找该命令的相应开销(cost),即要搜索多少个路径中的目录才能找到这条命令。带-r选项的hash命令将会清空这个哈希表。hash命令可以带参数,参数名就是那些要提前存入哈希表中的命令,比如:hash vi,就是将vi命令存入哈希表中。
dot命令是内置的Bourne shell命令,以一个脚本名为参数。dot命令通常被用来重新执行经过修改的.profile文件。例如:如果你在登录之后修改了.profile中的某项设置,用dot命令重新执行.profile就可以让修改生效,而不必先注销再重新登录回来。

命令行由一个或多个单词(标记)组成,以空白符(空格或制表符)来分隔,以换行符结尾,换行符则是通过按下回车键产生的。如果命令很长,且需要转到下一行继续输入,就必须先输入一个反斜杠,然后再换行,这样才能在下一行接着输入。
退出状态是一个0 - 255之间的整数,通常,程序退出时,如果返回的状态是0,表示命令执行成功,如果退出状态非0,则表示命令因某种原因而执行失败。shell的状态变量是?,通过$?来获取。
一个命令行可以包括多条命令,命令之间用分号隔开,命令行以换行符终止。把多条命令合成一组后就能将所有命令的输出通过管道发给另一个命令或重定向到某个文件。
命令的条件执行:在条件下执行命令时,要用特殊的元字符,即双与号(&&)或双竖杠(||)来分隔两个命令串。是否执行这两个元字符右侧的命令取决于左侧命令的退出状态。
在命令行末尾加上一个与号(&),shell就会立即返回shell提示符,同时在后台执行这条命令,后台任务会在执行过程中将它产生的输出随时发送到屏幕上。
[root@centos ~]# man sh | lp&
[1] 5563
通过管道将man命令的输出(即sh命令的手册页)发给打印机,命令行末尾的与号把作业放入后台;下面显示的两个数字,方括号里的数字说明这是第一个被放入后台的作业;第2个数是一个PID,或者说作业的进程标识号。
[root@centos ~]# kill -9 $!
变量!的值是最近那个被放入后台的作业的PID,如果能及时取出这个值,就能赶在作业进入打印队列之前终止它。

元字符是用来代表本身含义以外的内容的特殊字符。shell的元字符也称为通配符(wildcards)。

将元字符扩展为文件名的过程又称作文件名替换(filename substitution)或globing,如果没有文件名能够跟所用的元字符匹配,shell就会把这个元字符当作一个字面字符。

变量分为局部变量和环境变量。
局部变量的值只对创建它的shell可见。变量名必须以字母或下划线字符开头,后面的字符则可以是字母、0-9的十进制数字或下划线。此外的任意字符都标志着变量名的终止。赋值时,等号两侧不能有空格。如果要将变量设为空值就要紧接着等号按下回车键。在变量前面加一个美元符($),表示要提取变量保存的值。
双美元符是一个特殊的变量,它保存了当前shell的PID。
只读变量不能被重新定义或复位。
[root@centos ~]# name=Tom
[root@centos ~]# readonly name #这里定义的只读变量
[root@centos ~]# echo $name
Tom
[root@centos ~]# unset name #复位只读变量但是没成功,因为是只读变量
bash: unset: name: cannot unset: readonly variable
[root@centos ~]# name=Joe #也不能重新定义只读变量
bash: name: readonly variable
环境变量可用于创建它们的shell和该shell派生的所有子shell和进程。按照惯例,环境变量应该用大写字母表示,环境变量就是已被输出的变量。
一些环境变量比如HOME、LOGNAME、PATH和SHELL,在用户登录之前就已经被/bin/login程序设置好了。

通常情况下,环境变量被定义和保存在用户主目录下的.profile文件里。
设置环境变量要在给变量赋值之后或设置变量时使用export命令(导出变量时不要在变量前加美元符)。
记住:导出的变量值不会向上传递给其父shell。子shell不可能改变父shell中变量的值。
[root@centos ~]# FUHAO=wyse
[root@centos ~]# export FUHAO #这个导出操作使得此变量成为环境变量
[root@centos ~]# echo $FUHAO
wyse
[root@centos ~]# NAME="John Smith"
[root@centos ~]# export NAME #这个导出操作必须有
[root@centos ~]# echo $NAME
John Smith
shell提供了两条内置命令来打印变量的值:set和env。
set命令用于打印出所有的变量,包括局部变量和全局变量;env命令则只打印全局变量。
只要不被设为只读,局部变量和环境变量均可以被unset命令复位(即将指定变量从shell的内存空间删除掉)。

echo命令用来打印变量的值,将参数打印到标准输出,主要是用在Bourne shell和C shell中(Korn shell有内置的print命令)。


变量修饰符首先提供一个快捷的条件测试,用来检查某个变量是否已经被设置,然后根据测试结果给变量赋一个值。

合冒号配合使用时,修饰符(-、=、+、?)可以检查变量是否尚未赋值或值为空。不加冒号时,值为空的变量也将被认为已设置。

[root@centos ~]# echo ${namex:?"namex is undefined"}
bash: namex: namex is undefined
修饰符“:?”检查变量是否已被设置。如果尚未设置该变量,就把问号右边的信息打印在标准错误输出上,且在变量名之后。如果此时是在执行脚本,就退出脚本。
[root@centos ~]# echo ${y?}
bash: y: parameter null or not set
如果问号后面没有提供报错信息,shell就向标准错误输出发送默认的消息。
阅读(1974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~