linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > SHELL >
栏目导栏
资料搜索
热门文章
·csh shell编程入门
·玩转Linux shell命令提示符
·Bourne Shell及shell编程
·Shell 编程实例集锦
·Linux下的shell编程入门
·Shell编程基础
·linux shell 编程基础
·shell基础十二篇
·Linux的Shell编程
·linux Shell编程入门 实例讲解
·Linux主要shell命令详解
·Linux shell 脚本实例一
·深入浅出Shell编程: Shell 变量
·shell命令(一)
·UNIX/LINUX SHELL 正则表达式语
最新文章
·Linux系统中加入自定义Shell为
·Shell学习:关于替换命令-tr-R
·Linux Shell学习:uniq命令使用
·uClinux操作系统下的shell功能
·Shell编程基础:单引号和双引号
·Linux操作系统下Shell语句元字
·Linux系统环境程序设计之路
·Linux Shell中PS命令中的%CPU的
·Linux Shell元字符知识笔记
·压缩命令-vi-认识SHELL-正规表
·Linux系统下Shell命令行快捷键
·谈Linux Shell下的输出重定向
·在Shell中执行vi/cp/mv时自动备
·shell数组介绍
·开启和关闭Shell特性的小技巧
Google
 
Bourne Shell及shell编程
[ 作者:Linux联盟收集  加入时间:2006-06-28 22:35:53  来自:Linux联盟收集 ]

Bourne Shell qZMLinux联盟
  qZMLinux联盟
介绍:Bourne Shell 基础及其他很多有用的特性,shell编程及组织。 qZMLinux联盟
  qZMLinux联盟
主要内容: qZMLinux联盟
.shell基础      基本介绍,环境,选项,特殊字符 qZMLinux联盟
.shell变量      用户定义变量,环境变量,位置变量(shell 参数) qZMLinux联盟
.shell script编程 qZMLinux联盟
        条件测试,循环及重复控制 qZMLinux联盟
.shell定制 qZMLinux联盟
  qZMLinux联盟
1.shell基础知识 qZMLinux联盟
  作者:Stephen Bourne 在Bell实验室开发 qZMLinux联盟
  建议:man sh  查看相关UNIX上的改进或特性 qZMLinux联盟
  qZMLinux联盟
(1)shell提示符及其环境 qZMLinux联盟
   /etc/passwd文件 qZMLinux联盟
   提示符:$ qZMLinux联盟
   /etc/profile $HOME/.profile qZMLinux联盟
(2)shell执行选项 qZMLinux联盟
   -n   测试shell script语法结构,只读取shell script但不执行 qZMLinux联盟
   -x   进入跟踪方式,显示所执行的每一条命令,用于调度 qZMLinux联盟
   -a   Tag all variables for export qZMLinux联盟
   -c "string"  从strings中读取命令 qZMLinux联盟
   -e   非交互方式 qZMLinux联盟
   -f   关闭shell文件名产生功能 qZMLinux联盟
   -h   locate and remember functions as defind qZMLinux联盟
   -i   交互方式 qZMLinux联盟
   -k   从环境变量中读取命令的参数 qZMLinux联盟
   -r   限制方式 qZMLinux联盟
   -s   从标准输入读取命令 qZMLinux联盟
   -t   执行命令后退出(shell exits) qZMLinux联盟
   -u   在替换中如使用未定义变量为错误 qZMLinux联盟
   -v   verbose,显示shell输入行 qZMLinux联盟
  qZMLinux联盟
   这些选项可以联合使用,但有些显然相互冲突,如-e和-i. qZMLinux联盟
  qZMLinux联盟
(3)受限制shell(Restircted Shell) qZMLinux联盟
    sh -r 或 /bin/rsh qZMLinux联盟
  qZMLinux联盟
    不能执行如下操作:cd, 更改PATH,指定全路径名,输出重定向,因此可以提供一个较 qZMLinux联盟
    好的控制和安全机制。通常rsh用于应用型用户及拨号用户,这些用户通常是看不到提 qZMLinux联盟
    示符的。通常受限制用户的主目录是不可写的。 qZMLinux联盟
  qZMLinux联盟
    不足:如果用户可以调用sh,则rsh的限制将不在起作用,事实上如果用户在vi及more qZMLinux联盟
        程序中调用shell,而这时rsh的限制将不再起作用。 qZMLinux联盟
  qZMLinux联盟
(4)用set改变 shell选项 qZMLinux联盟
   用户可以在$提示符下用set命令来设置或取消shell的选项。使用-设置选项,+取消相应 qZMLinux联盟
   选项,大多数UNIX系统允许a,e,f,h,k,n,u,v和x的开关设置/取消。 qZMLinux联盟
  qZMLinux联盟
   set -xv qZMLinux联盟
        启动跟踪方式;显示所有的命令及替换,同样显示输入。 qZMLinux联盟
   set -tu qZMLinux联盟
        关闭在替换时对未定义变量的检查。 qZMLinux联盟
  qZMLinux联盟
   使用echo $-显示所有已设置的shell选项。 qZMLinux联盟
  qZMLinux联盟
  qZMLinux联盟
(5)用户启动文件 .profile qZMLinux联盟
        PATH=$PATH:/usr/loacl/bin; export PATH qZMLinux联盟
  qZMLinux联盟
(6)shell环境变量 qZMLinux联盟
        CDPATH  用于cd命令的查找路径 qZMLinux联盟
        HOME    /etc/passwd文件中列出的用户主目录 qZMLinux联盟
        IFS     Internal Field Separator,默认为空格,tab及换行符 qZMLinux联盟
        MAIL    /var/mail/$USERNAME     mail等程序使用 qZMLinux联盟
        PATH qZMLinux联盟
        PS1,PS2        默认提示符($)及换行提示符(>) qZMLinux联盟
        TERM    终端类型,常用的有vt100,ansi,vt200,xterm等 qZMLinux联盟
  qZMLinux联盟
        示例:$PS1="test:";export PS1 qZMLinux联盟
              test: PS1="$";export PS1 qZMLinux联盟
              $echo $MAIL qZMLinux联盟
              /var/mail/username qZMLinux联盟
(7)保留字符及其含义 qZMLinux联盟
$      shell变量名的开始,如$var qZMLinux联盟
   |    管道,将标准输出转到下一个命令的标准输入 qZMLinux联盟
   #    注释开始 qZMLinux联盟
   &    在后台执行一个进程 qZMLinux联盟
   ?   匹配一个字符 qZMLinux联盟
   *    匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.) qZMLinux联盟
   $-   使用set及执行时传递给shell的标志位 qZMLinux联盟
   $!   最后一个子进程的进程号 qZMLinux联盟
   $#   传递给shell script的参数个数 qZMLinux联盟
   $*   传递给shell script的参数 qZMLinux联盟
   $@   所有参数,个别的用双引号括起来 qZMLinux联盟
   $?   上一个命令的返回代码 qZMLinux联盟
   $0   当前shell的名字 qZMLinux联盟
   $n    (n:1-) 位置参数 qZMLinux联盟
   $$   进程标识号(Process Identifier Number, PID) qZMLinux联盟
   >file        输出重定向 qZMLinux联盟
   <file        输入重定向 qZMLinux联盟
   `command`    命令替换,如    filename=`basename /usr/local/bin/tcsh` qZMLinux联盟
   >>fiile      输出重定向,append qZMLinux联盟
  qZMLinux联盟
   转义符及单引号: qZMLinux联盟
        $echo "$HOME $PATH" qZMLinux联盟
        /home/hbwork /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: qZMLinux联盟
        $echo '$HOME $PATH' qZMLinux联盟
        $HOME $PATH qZMLinux联盟
        $echo $HOME $PATH qZMLinux联盟
        $HOME /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hbw qZMLinux联盟
ork/bin qZMLinux联盟
  qZMLinux联盟
   其他: qZMLinux联盟
        $dir=ls qZMLinux联盟
        $$dir qZMLinux联盟
        $alias dir ls qZMLinux联盟
        $dir qZMLinux联盟
  qZMLinux联盟
        ls > filelist qZMLinux联盟
        ls >> filelist qZMLinux联盟
        wc -l < filelist qZMLinux联盟
        wc -l filelist qZMLinux联盟
        sleep 5; echo 5 seconds reaches; ls -l qZMLinux联盟
        ps ax |egrep inetd qZMLinux联盟
        find / -name core -exec rm {} ; & qZMLinux联盟
        filename=`date "+%Y%m%d"`.log qZMLinux联盟
  qZMLinux联盟
2. shell变量 qZMLinux联盟
  变量:代表某些值的符号,如$HOME,cd命令查找$HOME,在计算机语言中可以使用变量可以 qZMLinux联盟
        进行多种运算和控制。 qZMLinux联盟
  qZMLinux联盟
  Bourne Shell有如下四种变量: qZMLinux联盟
        .用户自定义变量 qZMLinux联盟
        .位置变量即 shell script之参数 qZMLinux联盟
        .预定义变量(特殊变量) qZMLinux联盟
        .环境变量(参考shell定制部分) qZMLinux联盟
(1)用户自定义变量(数据的存储) qZMLinux联盟
        $ COUNT=1 qZMLinux联盟
        $ NAME="He Binwu" qZMLinux联盟
  qZMLinux联盟
     技巧:因为大部分UNIX命令使用小写字符,因此在shell编程中通常使用全大写变量, qZMLinux联盟
        当然这并不是强制性的,但使用大写字符可以在编程中方便地识别变量。 qZMLinux联盟
  qZMLinux联盟
     变量的调用:在变量前加$ qZMLinux联盟
        $ echo $HOME qZMLinux联盟
        /home/hbwork qZMLinux联盟
        $ WEEK=Satur qZMLinux联盟
        $ echo Today is $WEEKday qZMLinux联盟
        Today is qZMLinux联盟
        $echo Today is ${WEEK}day qZMLinux联盟
        Today is Saturday qZMLinux联盟
  qZMLinux联盟
     Shell变量赋值从右从左进行(Linux Shell/bash从左向右赋值!) qZMLinux联盟
     $ X=$Y Y=y qZMLinux联盟
     $ echo $X qZMLinux联盟
     y qZMLinux联盟
     $ Z=z Y=$Z qZMLinux联盟
     $ echo $Y qZMLinux联盟
  qZMLinux联盟
     $ qZMLinux联盟
  qZMLinux联盟
     使用unset命令删除变量的赋值 qZMLinux联盟
     $ Z=hello qZMLinux联盟
     $ echo $Z qZMLinux联盟
     hello qZMLinux联盟
     $ unset Z qZMLinux联盟
     $ echo $Z qZMLinux联盟
  qZMLinux联盟
     $ qZMLinux联盟
  qZMLinux联盟
     有条件的命令替换 qZMLinux联盟
        在Bourne Shell中可以使变量替换在特定条件下执行,即有条件的环境变量替换。 qZMLinux联盟
        这种变量替换总是用大括号括起来的。 qZMLinux联盟
  qZMLinux联盟
        .设置变量的默认值 qZMLinux联盟
            在变量未赋值之前其值为空。Bourne Shell允许对变量设置默认值,其格式如 qZMLinux联盟
下: qZMLinux联盟
            ${variable:-defaultvalue} qZMLinux联盟
            例: qZMLinux联盟
                $ echo Hello $UNAME qZMLinux联盟
                Hello Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论

分页:[1] 2 3 4 5 6 7 8 9 10 11 12
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息