文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Shell设计(二)

Shell设计(二)

时间:2006-12-20  来源:h0000001

常用的压缩指令 常见的压缩文件后缀(Linux文件的属性与文件名没有关系,以下所说只是习惯) *.Z        compress程序压缩的文件 *.bz2      bzip2程序压缩的文件 *.gz       gzip程序压缩的文件 *.tar      tar程序打包的数据,没有经过压缩 *.tar,gz   tar程序打包的文件,且经过gzip压缩     compress    语法:   #compress [-d] file_name -d 解压缩参数!或使用uncompress也可以解压缩文件,基压缩后缀是*.Z     bzip2,bzcat 语法:   #bzip2 [-dz] file_name      <==压缩解压缩指令        #bzcat file_name.bz2        <==读取压缩文件内容 -d:   解压缩,或使用bunzip2也可以解压缩文件. -z:   压缩     gzip,zcat 语法:   #gzip [-d#] file_name    <==压缩与解压缩        #zcat filename_gz        <==查看压缩文件内容 -d:   解压缩参数,或使用gunzip也可以解压缩文件. -#:   压缩等级,1最不好,9最好,默认为6     tar 语法:   #tar [-zxcvfpP] file_name         #tar -N 'yyyy/mm/dd' /path -zcvf target.tar.gz source 参数说明: -z:  是否同时具有gzip -x:  解开一个压缩文件 -c:  建立一个压缩文件 -v:  压缩过程中显示文件 -f:  使用文件名 -p:  使用原文件的原有属性(属性不会依据用户而变) -P:  可以使用绝对路径 -t:  查看tarfile里面的文件 -N:  比后面接的日期(yyyy/mm/dd)还要新的文件才会被打包进新建的文件中 --exclued FILE:  在压缩过程中,不要将FILE打包. example: #tar -cvf directory.tar directory #tar -zcvf directory.tar directory #tar -zcvf filename.tar.gz /home/test/* #tar -xvf directory.tar #tar -zxvf directory.tar.gz #tar -ztvf directory.tar.gz #tar -N '2006/112/21' -zcvf home.tar.gz /home #tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc #tar /dev/st0 /home     cpio 语法:  #cpio -cobB > [file|device]   <==备份        #cpio -icduv < [file|device]  <==还原 -o:  将数据复制输出到文件或设备上 -i:  将数据自文件或设备复制输出到系统中 -t:  查看cpio建立的文件或设备的内容 -c:  以一种较新的便携式格式储存 -v:  让存储过程中文件名称可以在屏幕上显示 -B:  让默认的Blocks可以增至5120bytes,默认是512bytes.这样一来,可以让大文件储存速度加快. -d:  自动建立目录,由于cpio的内容可能不在同一个目录内,如此在反备份过程会有问题.加上-d后,就可以自动将需要的目录建立起来. -u:  自动用较新的文件覆盖较旧的文件.   使用cpio时,cpio无法直接读取文件,而是需要每个文件或目录的路径连同文件名一起才可以被记录下来.因此,cpio最常跟find指令一起使用. 如: #find / -print | cpio -covB > /dev/st0 #cpio -icduv < /dev/st0 #cpio -icduv < /dev/st0 > /tmp/content       正规表示法 grep   语法:   #grep "word" filename 将filename文件是有word的那一行显示出来.     通配符           意义 ======================================================== ^               句首字符相符 $               句尾相同的字符 ?               任何一个单一字符 *               随意几个任意字符 \               跳转字符,将特殊字符变成普通字符 [list]          列表中的字符 [range]         列表中范围内的字符 [^list]         反向选择,与[list]相反 [^range]        反向选择,与[range]相反 \{n\}           与前一个相同字连续n个 \{n,m\}         与前一个相同字连续n-m个 ========================================================== 如: #grep ^boot /etc/*    <==查找/etc目录下所有的文件,找出以boot为开头的行. #grep [XYZ] /etc/*    <==查找/etc目录下所有的文件,找出含有XYZ三个字符中任何一个字符的那一行.           ================================================================= 学习使用Shell Scripts   讲了一大堆变量,管线指令,都是为了给脚本做铺垫的.现在开始学习脚本了. 脚本,字面意思就是剧本的意思,就是将我们要执行的内容写成一个脚本,让系统依据这个脚本来执行我们想要的东西. 基本上,执行脚本时,bash据以判断执行的步骤为: 1.如果读取到一个Enter符号(CR),就尝试开始执行该行命令 2.指令间的多个空白会被忽略,当一个空格来处理 3.空白行也将被忽略,并且Tab也不会被理会 4.如果一行内容太多,则可以使用\延伸至下一行 5.此外,使用最多的#可做为注释.任何加在#后面的字,将全部视为注释文字而被忽略.   在撰写脚本时,最好养成如下良好习惯 1.先宣告使用的shell为何(在某些情况下,如果没有宣告使用的shell,常会出现错误信息而导致脚本无法被执行.例如:/etc/crontab) 2.注明该脚本的内容功能,版本信息,作者,文件创建日期等 3.每一个大步骤的主要功能也要说明     执行一个脚本有两种方法. 1.将文件属性改成可以执行的属性.如chmod 755 script.sh.然后执行该文件. 2.另一种则是直接以sh这个可执行文件来执行脚本内容.如sh script.sh
  卷标与运算符declare 语法:  #declare[-afirx] 参数说明: -a:  定义为数组array -f:  定义为函数function -i:  定义为整数integer -r:  定义为只读 -x:  定义为通过环境输出变量 来看一个例子. [root@mail root]# a=5
[root@mail root]# b=7
[root@mail root]# c=$a*$b
[root@mail root]# echo $c
5*7
[root@mail root]# declare -i a=5
[root@mail root]# declare -i b=7
[root@mail root]# declare -i c=$a*$b
[root@mail root]# echo $c
35
[root@mail root]#
可以看到,如果不先声明变量类型,则该变量默认呈现字符串的形式.
    交互式脚本:即程序会依据你的输入的数据进行判断.最简单的交互式指令是read指令,read的功能是将你在键盘上输入的内容放到变量中.如: [root@mail root]# read name
h0000001
[root@mail root]# echo $name
h0000001
[root@mail root]#
  定义一个脚本的参数代号 #myscript opt1 opt2 opt3 opt4   $0       $1    $2  $3   $4 说明如下: $0:myscript,即脚本的文件名 $1:opt1,即第一个附加的参数 $2:opt2,第二个附加的参数 $3:opt3,第三个附加的参数         脚本逻辑判断式与表达式 ----------------------------------------------------------------------------------- 逻辑卷标        含义 ----------------------------------------------------------------------------------- 1.             关于文件与目录的逻辑卷标 -f             常用!检测文件是否存在 -d             常用!检测目录是否存在 -b             检测是否为一个block文件 -c             检测是否为一个character文件 -S             检测是否为一个socket标签文件 -L             检测是否为一个符号链接文件 -e             常用!检测某个东西是否存在,可以是任何东西 2.             关于程序的逻辑卷标 -G             检测是否由GID所执行的程序拥有 -O             检测是否由UID所执行的程序拥有 -p             检测是否为程序间传送信息的name pipe或FIFO 3.             关于文件的属性检测 -r             检测是否为可读属性 -w             检测是否为可写入属性 -x             检测是否为可执行属性 -s             检测是否为非空白文件 -u             检测是否具有SUID属性 -g             检测是否具有SGID属性 -k             检测是否具有sticky bit属性 4.             两个文件之间的判断与比较 -nt            第一个文件比第二个文件新 -ot            第一个文件比第二个文件旧 -ef            第一个文件与第二个文件为同一个文件(诸如链接文件) 5.             逻辑与(and)和或(or) &&             逻辑与 ||             逻辑或       bash shell scripts的运算符的加减乘除运算 ----------------------------------------------------------------------------------- 运算符          含义 ----------------------------------------------------------------------------------- =              等于 !=             不等于 <              小于 >              大于 -eq            等于 -ne            不等于 -lt            小于 -gt            大于 -le            小于或等于 -ge            大于或等于 -a             双方都成立(and) -o             单方成立(or) -z             空字符串 -n             非空字符串         条件判断语句if...then...fi 语法: if [条件判断一] && (||( [条件判断二]; then  ... elif [条件判断三] && (||) [条件判断四]; then ... else fi 需要注意的地方: 1.在[]中,只能有一个判断式; 2.在[]与[]间,可以使用&&或||结合判断; 3.每一个独立的组件之间需要用空格键隔开.     选择语句case...esac 语法: case 种类方法(string) in           种类方法一)          程序执行段          ;;      种类方法二)          程序执行段          ;;      *)          echo "Usage: {种类方法一|种类方法二}"          exit 1 esac 种类方式(string)格式方要有两种: 1.直接输入:就是以"执行文件+string"的方式执行.string可以直接写成$1. 2.交互式:就是由屏幕输出可能的项,然后让用户输入,通常必须配合read variable,然后string写成$variable的格式.     循环语名 .for((条件1;条件2;条件3)) .for variable in variable1 variable2 ...... .while [condition1] && {||} [condition2]... .until [condition1] && {||} [condition2]...   while与until的分别是: .until:直到条件符合的时候才能退出程序; .while:当条件符合时,就继续做.       如何调试脚本 #sh [-nvx] scripts -n:  不执行脚本,查询脚本内的语法,若有错误则列出 -v:  在执行脚本前,先将脚本的内容显示在屏幕上 -x:  将用到的脚本内容显示在屏幕上,与-v稍微不同  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载