|
标 题: LINUX选修课讲义:Bourne Shell及shell编程(1)
发信站: 碧海青天 (Wed Apr 21 23:41:45 1999), 转信
版权声明:
本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行
任何商业性或赢利性活动。转载时请保留本版权声明。
作者:何斌武,hbwork@dlutedu,大连理工大学网络中心,April 1999
URL: ftp://ftpdlutedu/pub/PEOPLE/albin/
源码:
------------------------------------------------------------------------------
Bourne Shell
介绍:Bourne Shell 基础及其他很多有用的特性,shell编程及组织。
主要内容:
shell基础 基本介绍,环境,选项,特殊字符
shell变量 用户定义变量,环境变量,位置变量(shell 参数)
shell script编程
条件测试,循环及重复控制
shell定制
1shell基础知识
作者:Stephen Bourne 在Bell实验室开发
建议:man sh 查看相关UNIX上的改进或特性
(1)shell提示符及其环境
/etc/passwd文件
提示符:$
/etc/profile $HOME/profile
(2)shell执行选项
-n 测试shell script语法结构,只读取shell script但不执行
-x 进入跟踪方式,显示所执行的每一条命令,用于调度
-a Tag all variables for export
-c "string" 从strings中读取命令
-e 非交互方式
-f 关闭shell文件名产生功能
-h locate and remember functions as defind
-i 交互方式
-k 从环境变量中读取命令的参数
-r 限制方式
-s 从标准输入读取命令
-t 执行命令后退出(shell exits)
-u 在替换中如使用未定义变量为错误
-v verbose,显示shell输入行
这些选项可以联合使用,但有些显然相互冲突,如-e和-i
(3)受限制shell(Restircted Shell)
sh -r 或 /bin/rsh
不能执行如下操作:cd, 更改PATH,指定全路径名,输出重定向,因此可以提供一个较
好的控制和安全机制。通常rsh用于应用型用户及拨号用户,这些用户通常是看不到提
示符的。通常受限制用户的主目录是不可写的。
不足:如果用户可以调用sh,则rsh的限制将不在起作用,事实上如果用户在vi及more
程序中调用shell,而这时rsh的限制将不再起作用。
(4)用set改变 shell选项
用户可以在$提示符下用set命令来设置或取消shell的选项。使用-设置选项,+取消相应
选项,大多数UNIX系统允许a,e,f,h,k,n,u,v和x的开关设置/取消。
set -xv
启动跟踪方式;显示所有的命令及替换,同样显示输入。
set -tu
关闭在替换时对未定义变量的检查。
使用echo $-显示所有已设置的shell选项。
(5)用户启动文件 profile
PATH=$PATH:/usr/loacl/bin; export PATH
(6)shell环境变量
CDPATH 用于cd命令的查找路径
HOME /etc/passwd文件中列出的用户主目录
IFS Internal Field Separator,默认为空格,tab及换行符
MAIL /var/mail/$USERNAME mail等程序使用
PATH
PS1,PS2 默认提示符($)及换行提示符(> )
TERM 终端类型,常用的有vt100,ansi,vt200,xterm等
示例:$PS1="test:";export PS1
test: PS1="\$";export PS1
$echo $MAIL
/var/mail/username
(7)保留字符及其含义
$ shell变量名的开始,如$var
| 管道,将标准输出转到下一个命令的标准输入
# 注释开始
在后台执行一个进程
? 匹配一个字符
* 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含)
$- 使用set及执行时传递给shell的标志位
$! 最后一个子进程的进程号
$# 传递给shell script的参数个数
$* 传递给shell script的参数
$@ 所有参数,个别的用双引号括起来
$ 上一个命令的返回代码
$0 当前shell的名字
$n (n:1-) 位置参数
$$ 进程标识号(Process Identifier Number, PID)
>file 输出重定向
>fiile 输出重定向,append
转义符及单引号:
$echo "$HOME $PATH"
/home/hbwork /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:
$echo \'$HOME $PATH\'
$HOME $PATH
$echo \$HOME $PATH
$HOME /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hbw
ork/bin
其他:
$dir=ls
$$dir
$alias dir ls
$dir
ls > filelist
ls >> filelist
wc -l
wc -l filelist
sleep 5; echo 5 seconds reache
|
温馨提示:
1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!
|