Bourne Shell之Shell基础知识
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-07 10:45:58 浏览: 评论:0
建议:man sh 查看相关UNIX上的改进或特性
(1)shell提示符及其环境
在passwd文件中可以看到每个用户登陆后使用的shell,下面两个文件也是这个意思。
/etc/passwd文件
提示符:$
/etc/profile $HOME/.profile
(2)shell执行选项
在建立一个shell脚本后我们要用sh命令来运行和测试,下面是一些sh常用的参数
-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选项
实际上就是设置sh的默认参数,我们在运行shell脚本时,并不总是使用sh scriptsfile,而是用./scriptsfile来运行,这个时候就使用sh的默认参数,用户可以在$提示符下用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的参数
$@ 所有参数,个别的用双引号括起来
$? 上一个命令的返回代码
当前shell的名字
$n (n:1-) 位置参数
$$ 进程标识号(Process Identifier Number, PID)
覆盖现有文件的数据
>file 输出重定向
这个没看明白
`command` 命令替换,如 filename=`basename /usr/local/bin/tcsh`
会在现有文件末尾追加数据
>>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/hbwork/bin
其他:
- $dir=ls
- $$dir
- $alias dir ls
- $dir
将ls结果输出到文件filelist
ls > filelist
将ls结果追加到文件filelist最后
ls >> filelist
统计文件filelist内容的行数
wc -l < filelist
统计字符串filelist的总行数
wc -l filelist
等待5秒钟,显示5 seconds reaches,执行ls -l命令
sleep 5; echo 5 seconds reaches; ls -l
[在当前进程中找出所有的inetd进程]
ps ax |grep inetd
这个没看明白,find不会用,呵呵
find / -name core -exec rm { } ; &
设置filename为日期+年月日.log
filename=`date "+%Y%m%d"`.log
Tags: Bourne Shell Shell基础知识
相关文章
- ·教你使用Linux系统的Shell脚本维护Oracle(2014-02-28)
- ·Shell脚本 实现vi/cp/mv前自动备份源文件(2014-02-28)
- ·了解Linux系统强大的控制台、终端和shell(2014-02-28)
- ·Linux Shell脚本Ldd命令原理及使用方法(2014-02-28)
- ·Linux操作系统下打造友好的Shell提示符(2014-02-28)
- ·Linux系统下查看文件调用情况Shell命令(2014-03-05)
- ·Linux操作系统Shell基础知识(2014-03-05)
- ·Shell编程:Linux系统环境程序设计之路(2014-03-05)
- ·基于COM接口的Shell扩展技术应用(2014-03-07)
- ·Shell精解(2014-03-07)
- ·在shell中捕捉信号的命令(2014-03-07)
- ·Shell高级屏幕输出(2014-03-07)
- ·在Shell里输入中文(2014-03-07)
- ·Shell 对象(2014-03-07)
- ·PHP也可以当成Shell Script使用(2014-03-07)
- ·Shell启动文件与环境变量(2014-03-07)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)