Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137275
  • 博文数量: 35
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-09 12:22
个人简介

http://www.76ku.cn

文章分类

全部博文(35)

文章存档

2011年(1)

2010年(17)

2007年(17)

我的朋友

分类:

2007-07-24 17:10:59

1.设置suid/guid的例子
这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限
                       
chmod 4755 rws r-x r-x
                       文文件被设置了 s u i d,文件属主具有读、写和执行的权限,所有其他用户具有读和执行的权限
                      
chmod 6711 rws --s --s
                       文文件被设置了 s u i d和g u i d,文件属主具有读、写和执行的权限,所有其他用户具有执行的权限
                      
chmod 4764 rws rw- r--
                       文文件被设置了 s u i d,文件属主具有读、写和执行的权限,同组用户具有读和执行的权限,其他用户具有读权限

2.chown和chgrp
  chown命令的一般形式为:
  chmod -R -h owner file
  - R选项意味着对所有子目录下的文件也都进行同样的操作。
  - h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件

3.umask
umask命令确定了你创建文件的缺省模式
  一般来说, umask命令是在 /etc/profile文件中设置的,每个用户在登录时都会引用这个文
件,所以如果希望改变所有用户的 umask,可以在该文件中加入相应的条目。如果希望永久性
地设置自己的umask值,那么就把它放在自己 $HOME目录下的.profile或.bash_profile文件中。
该命令的一般形式为:
umask nnn
其中nnn为umask置000-777
         对于文件来说,这数字的最大值分别是 6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用 chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说, umask中各个数字最大可以到 7。

4.find和xargs
Find命令的一般形式为:
find pathname -options [-print -exec -ok]
     让我们来看看该命令的参数:
     pathname find命令所查找的目录路径。例如用 .来表示当前目录,用 /来表示系统根目录。
     -print find命令将匹配的文件输出到标准输出。
     -exec   find命令对匹配的文件执行该参数所给出的 shell命令。相应命令的形式为 'command' {} \;,注意{}和\;之间的空格。
     -ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
$ find . -name "[A-Z]*" -print
下面的命令就能够返回名为 ax37.txt的文件:
$ find . -name "[a-z][a-z][0--9][0--9].txt" -print
前目录下查找文件权限位为 7 5 5的文件
$ find . -perm 755 -print
-prune选项来指出需要忽略的目录
$ find /apps -name "/apps/bin" -prune -o -print
在 /etc目录下查找所有的目录
$ find /etc -type d -print
在当前目录下查找文件长度大于 100字节的文件
$ find /home/apache -size 100c -print
在当前目录下查找长度超过 10块的文件(一块等于 512字节)
$ find . -size +10 -print
当前目录开始查找位于本文件系统(不进入其他文件系统)中文件名以 XC结尾的文件
$ find . -name "*.XC" -mount -print
使用 cpio命令备份 /etc、/home和/apps目录中的文件
$ cd /
$ find etc homne apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0  (每块大小64K(65536))
使用exec
$ find . -type f -exec ls -l {} \;
xargs命令每次只获取一部分文件而不是全部,不像 -exec选项那样
普通文件中搜索 include这个词:
$ find ./ -type f -print | xargs grep "include"

在shell中使用find结合grep进行文件的替换
# find ./ -exec grep str1 '{}' \; -exec sed -i.bak s/str1/str2/g '{}' \;
上面命令可以在当前目录下(包括子目录)查找包含str1的文件,自动替换成str2,并且生成源文件的bak文件

5.后台执行命令
1).cron和crontab
cron是系统主要的调度进程,每一个用户都可以有一个 crontab文件来保存调度信息,系统管理员是通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的 crontab文件。
crontab文件:
    第1列 分钟1~59
    第2列 小时1~23(0表示子夜)
    第3列 日1~31
    第4列 月1~12
    第5列 星期0~6(0表示星期天)
    第6列 要运行的命令
在每天 18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh
0,30 18-23 * * * /apps/bin/dbcheck.sh
crontab命令的一般形式为:
Crontab [-u user] -e -l -r
其中:
-u 用户名
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
如果使用自己的名字登录,就不用使用 - u选项,因为在执行 crontab命令时,该命令能够知道当前的用户。
2).at命令
at命令将会保留所有当前的环境变量,根用户可以通过 /etc目录下的 at.allow和at.deny文件来控制哪些用户可以使用at命令,哪些用户不行
  at命令的基本形式为:
  at [-f script] [-m -l -r] [time] [date]
  其中,
  -f script 是所要提交的脚本或命令。
  -l 列出当前所有等待运行的作业。 atq命令具有相同的作用。
  -r 清除作业。为了清除某个作业,还要提供相应的作业标识( I D);有些 U N I X变体只接受atrm作为清除命令。
  -m 作业完成后给用户发邮件。
  time    at命令的时间格式非常灵活;可以是 H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用 a.m.或p.m.。         
  date 日期格式可以是月份数或日期数,而且 at命令还能够识别诸如 today、tomorrow这样的词。
$ at 14:20
> echo "aaa" >a.txt
> (ctrl+D)
$ at 2.30pm MAY 12
$ at now + 10 minuts
$ at 4.20am tomorrow -r /home/chen/aa.sh
3).&命令
4).nohup命令
该命令可以在你退出帐户之后继续运行相应的进程
nohup command &

6.字符类型匹配
* 匹配文件名中的任何字符串,包括空字符串。
? 匹配文件名中的任何单个字符。
[...] 匹配[ ]中所包含的任何字符。
[!...] 匹配[ ]中非感叹号!之后的字符。

7.输入输出
1).echo
echo -en "\007 your home is $HOME,you are connected on `tty`"
使用-n选项来禁止echo命令输出后换行
使用-e选项才能使转义符生效
2).read
$ read name temp
chen hello
$ echo $name $temp
chen hello
3).cat
4).管道
5).tee
tee -a files
tee命令作用可以用字母 T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中
who |tee aaa
6).重定向
                            
command > filename     把标准输出重定向到一个新文件中
                             
command >> filename    把标准输出重定向到一个文件中 (追加)
                             
command 1 > fielname   把标准输出重定向到一个文件中
                             
command > filename 2>&1  把标准输出和标准错误一起重定向到一个文件中
                             
command 2 > filename  把标准错误重定向到一个文件中
                             
command 2 >> filename  把标准输出重定向到一个文件中 (追加)
                             
command >> filename 2>&1  把标准输出和标准错误一起重定向到一个文件中 (追加)
                             
command < filename >filename2     把command命令以 filename文件作为标准输入,以 filename2文件作为标准输出                        
                             
command < filename  把command命令以filename文件作为标准输入
                             
command << delimiter  把从标准输入中读入,直至遇到 delimiter分界符
                             
command <&m  把文件描述符 m作为标准输入
                             
command >&m  把标准输出重定向到文件描述符 m中
                             
command <&-  把关闭标准输入

7).exec
  exec命令可以用来替代当前 shell;换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除,并重新启动一个 shell。它的一般形式为:
  exec command
8).命令执行顺序
&& : 成功地执行一个命令之后再执行另一个命令
|| : 在一个命令失败后再执行另一个命令
(命令1;命令2;...)
{命令1;命令2;...}   命令将在子 shell而不是当前 shell中作为一个整体被执行

8.正则表达式
^              只只匹配行首
$              只只匹配行尾
*              只一个单字符后紧跟 *,匹配0个或多个此单字符
[]             只匹配 [ ]内字符。可以是一个单字符,也可以是字符序列。可以使用 -表示[]内字符序列范围,如用 [1-5]代替[12345]
\              只用来屏蔽一个元字符的特殊含义。因为有时在 shell中一些元字符有 特殊含义。 \可以使其失去应有意义
.              只匹配任意单字符
pattern\{n\}   只用来匹配前面 pattern出现次数。 n为次数
pattern\{n,\}m   只含义同上,但次数最少为 n
pattern\{n,m\}   只含义同上,但 pattern出现次数在 n与m之间

经常使用的正则表达式举例

^              对行首
$              对行尾
^[the]         对以the开头行
[Ss]igna[lL]   对 匹配单词 signal、 signaL、Signal、SignaL
[Ss]igna[lL]\. 对同上,但加一句点
[mayMAY]       对包含 may大写或小写字母的 行
^USER$         对只包含USER的行
[tty]$         对以tty结尾的行
\.             对带句点的行
^d..x..x..x    对对用户、用户组及其他用户 组成员有可执行权限的目录
^[^l]          对排除关联目录的目录列表
[.*0]          对0之前或之后加任意字符
[000*]         对000或更多个
[iI]           对大写或小写I
[iI][nN]       对大写或小写i或n
[^$]           对空行
[^.*$]         对匹配行中任意字符串
^......$       对包括6个字符的行
[a- zA-Z]      对任意单字符
[a-z][a-z]*    对至少一个小写字母
[^0-9\$]       对非数字或美元标识
[^0-0A-Za-z]   对非数字或字母
[123]          对1到3中一个数字
[Dd]evice      对单词device或Device
De..ce         对前两个字母为 D e,后跟两个任意字符,最后为 ce
\^q                                            对以^q开始行
^.$                                            对仅有一个字符的行
^\.[0-9][0-9]                                  对以一个句点和两个数字开始的行
'"Device"'                                     对单词device
De[Vv]ice\.                                    对单词Device或device
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}               对日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 对IP地址格式nnn. nnn.nnn.nnn
[^.*$]                                         对匹配任意行

9.grep
常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。

精确匹配:
$ grep "48" aaa.txt
$ grep "48\>" aaa.txt
正则表达式
$ grep -s "^[^48]" aaa.txt
查询目录(其它用户和组有执行权限的目录)
$ ls -l | grep "^d.....x..x"

(未完)

阅读(1015) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-07-11 15:06:35

删除特殊文件时,可以先查找inode号 ls -i find . -inum 6670332 -exec rm '{}' \;