UNIX SHELL编程[转帖]_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4294 | 回复: 0   主题: UNIX SHELL编程[转帖]        下一篇 
luqunfang
注册用户
等级:少校
经验:1219
发帖:74
精华:0
注册:2012-6-25
状态:离线
发送短消息息给luqunfang 加好友    发送短消息息给luqunfang 发消息
发表于: IP:您无权察看 2012-7-9 14:46:55 | [全部帖] [楼主帖] 楼主

      该部分讲述的是shell编程方面的知识,以Bourne Shell为主,因为它是使用最广泛的,因而移植性最好,虽然功能不如现代许多其他版本的shell强大。

篇幅不大,只是一个简明手册,不具备系统性。

     1.文件名生成通配符
在shell中,有两种类型的通配符:文件名生成通配符和正则表达式通配符。两者是不同的,注意区分。

字符*
星号*匹配文件名中的任何字符串。

字符?
?匹配文件名中的任何单个字符。

[…]和[!…]
使用[…]匹配方括号中的任何字符。可以使用一个横杠来连接两个字母或数字,表示一个范围。

使用[!…]表示非的意思。

     2.正则表达式通配符
    (1).基本元字符集
元字符 含义
^ 只匹配行首,在[]中表示否定
$ 只匹配行尾
* 一个单字符后紧跟*,匹配0个或多个此字符
[] 匹配[]内字符,可以是一个单字符,也可以是字符序列,可以使用-表示范围
\ 用来屏蔽一个元字符的特殊含义
. 匹配任意单字符
pattern\{n\} 用来匹配前面pattern出现次数,n为次数
pattern\{n, \} 含义同上,但次数最少为n
pattern\{n, m\} 含义同上,但次数在n与m之间

   (2).\屏蔽的特殊字符

$ . ‘ “ * [ ] ^ \ + ?


   (3).例子
^$ 匹配空行
[A-Za-z] 匹配所有字母
[A-Za-z]* 匹配所有单词
[^A-Za-z] 匹配任一非字母型字符
A\{2, \} 匹配AAB、AAAB、…
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\} 匹配dd-mm-yyyy

    3.find命令
(1).find命令的形式:

find pathname -optino [ -pirnt -exec -ok ]


pahtname:查找的目录路径;

-print:将匹配的文件输出到标准输出;

-exec:对匹配的文件执行给出的shell命令,命令形式为‘command {} \;’,注意空格;

-ok:与-exec类似,在执行前会让用户确认。

(2).-name
按照文件名查找文件。

例:

查找$HOME目录及子目录下所有.txt文件:

find ~ -name "*.txt" -print


查找当前目录及子目录下以一个大写字母开头的文件:

find . -name "[A-Z]*" -print


查找/etc及子目录下以host开头的文件:

find  /etc -name "host*" -print


查找$HOME目录及子目录下文件:

find ~ -name "*" -print或find . -print
查找当前目录及子目录下以两个小写字母打头,后跟两个数字,最后是.txt后缀的文件:

find . -name "[a-z][a-z][0-9][0-9].txt" -print
(3).-perm


按照权限查找。

例:

查找当前目录及子目录下权限为755的文件:

find . -perm 755 -print


查找当前目录及子目录下所有用户都可读、写、执行的文件(使用八进制数字前要加-):

find . -perm -007 -print
(4).-prune


忽略某个目录,如果同时使用了-depth,则-prune被忽略。

例:

find /apps -name "/apps/bin" -prune -o -print


   (5).-user和-nouser
-user:按照文件属主查找;

-nouser:查找文件属主帐户已经被删除的文件。

例:

查找属主为duan的文件:

find ~ -user duan -print


查找文件属主帐户已经被删除的文件

find /home  -nouser -print


   (6).-group和-nogroup
-group:按照文件所属的组查找;

-nogroup:查找属于不存在的组的文件。

例:

查找属于用户组informix的文件

find /apps -group informix -print查找不存在组的文件:

find / -nogroup -print
(7).-mtime


按更改时间查找,减号-限定更改时间距今n日内的文件,加号+限定更改时间距今n日外的文件。

例:

查找更改时间在5日内的文件:

find . -mtime -5 -print


查找更改时间在3日前的文件:

find . -mtime +3 -print
(8).-newer


查找更改时间新的文件,可以使用!逻辑非。

例:

查找比haha.txt新的文件:

find . -newer haha.txt


查找比haha.txt新但比find.txt旧的文件:

find . -newer haha.txt ! -newer find.txt -print
(9).-type


按类型查找。类型有:

b,块设备文件;
d:目录;
c:字符设备文件;
p:管道文件;
l:符号链接文件;
f:普通文件。
例:

查找目录文件:

find /etc -type d -print


查找非目录文件:

find . ! -type d -print


查找符号联接文件:

find /etc -type l -print
(10).-size


按照文件大小查找。单位是块,也可以是字节(后跟c)。

例:

查找字节大于1M的文件:

find . -size +1000000c -print


查找字节为100的文件:

find . -size 100c -print


查找大小大于10块的文件:

find . -size +10 -print


查找字节小于10的文件:

find . -size -10c -print
(11).-depth


先匹配所有文件,再在子目录中查找。

例:

先匹配当前目录中所有.txt文件,再在子目录中找:

find . -name "*.txt" -depth -print
(12).-mount


只在当前文件系统中查找,不进入其他文件系统。

例:

find . -name "*.txt" -mount -print
(13).-cpio


使用cpio命令将文件备份到磁带上。

例:

find etc home apps -depth -print -cpio /dev/rmt0


    (14).-exec和-ok
对匹配的文件执行某操作。

例:

find logs -type f -mtime +5 -exec rm {} \;
find . -name "*.log" -mtime +5 -ok rm {} \;
find /etc -name "passwd*" -exec grep "rounder" {} \;


    (15).和xargs结合使用

find . -name "*.txt -print xargx file
find . -name "*.txt" -print xagrs echo  >/tmp/tmpfile
find . -perm -7 -print xargs chmod o-w
find . -type f -print xargs grep "device"
find . -name \* -type f -print xargs grep "DBO"


本篇文章来源于 中间件技术社区(http://middleware123.com) 原文链接:http://middleware123.com/tuxedo/intro/290.html




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论