免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2061 | 回复: 2
打印 上一主题 下一主题

[SCO UNIX] shell简介 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-05 21:41 |只看该作者 |倒序浏览
  1. shell简介

  2. UNIX Shell

  3. 1. 概况
  4.    UNIX常用shell
  5.         Bourne Shell(sh,bash), Korn shell(ksh), csh(csh, tcsh)
  6.    
  7.    与每个shell相关功能/知识如下:
  8.    . Shell与UNIX之关系
  9.    . Shell之特殊性
  10.    . Shell环境变量的设置
  11.    
  12. 2. shell与内核的交互作用
  13.     系统启动过程中内核(/unix,/vmunix,/boot/zImage等)将加载至内存直到系统关机,在启动
  14.     过程中,init将扫描/etc/inittab,在此文件中将列出可用的终端及其属性,一旦找到活动
  15.     的终端,getty(mingetty,LINUX)会给出login提示符和口令,确认完成后将启动相应的
  16.     shell(/etc/passwd文件中用户的SHELL域).

  17.     流程图如下:
  18.    
  19.     UNIX Kernel ----------->; init  -----+------->; getty <-->; Username and password
  20.                                ^        ^           +           (提示用户输入用户      
  21.                                |        |           |           名及口令)
  22.                                V        |           V
  23.                         /etc/inittab    |         login (读用户数据库/etc/passwd)
  24.                         (init配置文件) |           +
  25.                                         |           |
  26.                                         +-------用户正确?
  27.                                         |     No    +
  28.                                         |           | Yes
  29.                                         |           |  
  30.                                         |           V    (/etc/passwd文件中的用户shell)
  31.                                         +---------shell <----------+
  32.                                            exit     +              |
  33.                                                     |              |
  34.                                                     |              |
  35.                                                     +---用户命令---+
  36.    
  37.     在上图中,getty(mingetty)提示输入用户及口令,然后将用户名及口令传递给login,
  38.     login验证用户及口令是否匹配,如果身分验证通过,login将会自动转到其$HOME,并
  39.     启动在/etc/passwd域中所列出的shell程序,然后将控制权移交到所启动的任务(在移
  40.     交之前分别完成setgid,setuid). 如在/etc/passwd文件中用户的shell域为/bin/sh:
  41.    
  42.     sh -->; Read File /etc/profile  ->; Read file $HOME/.profile
  43.            系统定义变量                 用户定义变量
  44.            -------------------------+-------------------------
  45.                                     |
  46.                                     V
  47.                      给出shell提示符$PROMPT,默认为$ <-------------------+
  48.                                     +                                   |
  49.                                     |                                   |
  50.                                     |                                   |
  51.                                     +----------执行用户命令-------------+
  52.                                     |
  53.                                   exit
  54.                                     | 结束
  55.                                     V
  56.                                   控制权交给init
  57.                                  
  58.    Shell与子进程:层次关系
  59.    
  60.                         +--------------------+
  61.                         |     用户进程       |
  62.                         | +----------------+ |
  63.                         | |     shell      | |
  64.                         | | +------------+ | |
  65.                         | | | Unix Kernel| | |
  66.                         | | | +--------+ | | |                    
  67.                         | | | |Hardware| | | |
  68.                         | | | +--------+ | | |
  69.                         | | +------------+ | |
  70.                         | +----------------+ |
  71.                         +--------------------+

  72. 3.shell的自动执行功能
  73.   在shell script中的第一行开始: #!/bin/sh

  74. 4. shell的功能及特点
  75. .命令行解释
  76. .保留字
  77. .通配符
  78. .访问、处理命令
  79. .文件处理:I/O重定向及管道
  80. .命令替换
  81. .变量维护
  82. .环境控制
  83. .shell编程
  84. .SHELL常用特殊字符含义

  85. 各功能及特点解释:
  86. .命令行解释,去掉不必要的信息后再传递给内核处理

  87.         [hbwork@helius hbwork]$ echo Part A    Part B    Part C
  88.         Part A Part B Part C
  89.         [hbwork@helius hbwork]$ echo "Part A    Part B    Part C"
  90.         Part A    Part B    Part C

  91. .保留字
  92.     do,done,for,while,shift,if,then,else,fi
  93.    
  94. .通配符
  95.      ? *  []
  96.      
  97. .访问、处理命令
  98.     $PATH ->; True Path name to kernel
  99.    
  100. .文件处理:I/O重定向及管道
  101.    $ls >; filelist
  102.    $wc -l files         ( = wc -l < files)
  103.    #ls -l | sort -nr |more
  104.    
  105. .命令替换 `command`
  106.    将所有文件扩展名的filename.tar.gz的文件改为filename.tgz
  107.    #!/bin/sh
  108.    for i in *.tar.gz
  109.    do
  110.         mv $i `basename $i .tar.gz`.tgz
  111.    done
  112.    
  113.    通过crontab任务每天备份系统日志文件的shell script
  114.    
  115.    #!/bin/sh
  116.    Filename=`date "+%Y%m%d"`
  117.    cp /var/log/syslog   /backup/log/$Filename
  118.    
  119.    
  120. .变量维护
  121.         sh:     LOOKUP=/home/mydir
  122.                 export LOOKUP           (LOOKUP变量对子进程可见)
  123.         csh:    set LOOKUP = /home/mydir
  124.                 setenv LOOKUP /home/mydir
  125.         变量替换: PATH=/usr/local/bin:$PATH; expot PATH
  126.         
  127. .环境控制
  128.     当用户进入UNIX环境时将自动启动相应的SHELL,SHELL将对用户建立一个特定的环境,
  129.     此环境包括如下常用环境变量:TERM, PATH等。
  130.    
  131.     sh 环境变量文件: /etc/profile       $HOME/.profile
  132.     csh:             /etc/csh.cshrc     $HOME/.cshrc
  133.    
  134.     shell启动选项:
  135.         sh -x   script_file_name        语法检查
  136.         sh -i   无连接终端
  137.                
  138.    
  139.    
  140. .shell编程
  141.    Shell除了是一个命令行解释器外,同时还是一个功能相当强大的编程语言,大多数UNIX
  142.    系统的启动文件(rc files)都是使用shell script。

  143.                            
  144. . SHELL常用特殊字符含义
  145.    $    shell变量名的开始,如$var
  146.    |    管道,将标准输出转到下一个命令的标准输入
  147.    #    注释开始
  148.    &    在后台执行一个进程
  149.    ?   匹配一个字符
  150.    *    匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)
  151.    $#   传递给shell script的参数个数
  152.    $*   传递给shell script的参数
  153.    $?   上一个命令的返回代码
  154.    $$   进程标识号(Process Identifier Number, PID)
  155.    >;    输出重定向
  156.    <    输入重定向
  157.    `    命令替换,如    filename=`basename /usr/local/bin/tcsh`
  158.    >;>;   输出重定向,append
  159.    []   列出字符变化范围,如[a-z]
  160.    . filename   (Bourne Shell, bash)执行文件 filename
  161.    source filename (csh)        执行文件filename
  162.    
  163. 小结:shell是用户的UNIX内核的一个接口,进行命令解释(键盘输入),进行文件名和变量
  164.       替换,重定向I/O,定位可执行文件,shell可创建子进程并管理其运行;同时shell
  165.       维护用户的环境变量,是一个功能强大的编程语言。


复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-01-10 00:17 |只看该作者

shell简介

up

论坛徽章:
0
3 [报告]
发表于 2004-01-10 02:57 |只看该作者

shell简介

up
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP