Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254784
  • 博文数量: 54
  • 博客积分: 1761
  • 博客等级: 上尉
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-17 23:30
文章分类

全部博文(54)

文章存档

2013年(4)

2012年(7)

2011年(15)

2010年(28)

分类: 系统运维

2013-03-31 19:35:20

参考:
《Linux 与Shell编程指南》,man 手册以及Oreilly的在线书籍  
   
自测复习效果:

        

整理书架时突然发现了这本《Linux 与Shell编程指南》, 依稀还记得这是进Sun的时候就带着的书。现在翻来看看,仍有不少不太清楚的地方。    
  • 文件权限


这是系统安全的一部分,linux使用umask默认给所有创建的文件定义了权限。
total 72
-rwxrwxr-x 1 hiro hiro 8360 Mar 17 17:21 a.out


-  代表文件类型,d s b c p l
rwx 代表文件所有者的权限
rwx 代表文件所有者所在组的权限
r-x 其他用户的权限
1 硬链接数
hiro 用户名
hiro 用户所在组
8360 文件大小


以上输出类似于下面的

点击(此处)折叠或打开

  1. hiro@v-pc:~/code/cpp_learning$ stat a.out
  2. File: `a.out'
  3. Size: 8360 Blocks: 24 IO Block: 4096 regular file
  4. Device: 801h/2049d Inode: 51035 Links: 1
  5. Access: (0775/-rwxrwxr-x) Uid: ( 1000/ hiro) Gid: ( 1000/ hiro)
  6. Access: 2013-03-23 09:48:07.945269545 +0000
  7. Modify: 2013-03-17 17:21:57.080531828 +0000
  8. Change: 2013-03-17 17:21:57.080531828 +0000

权限位


r 4 读 
w 2 写
x 1 执行
s 4 用户组权限位,表示执行该文件时,当时的权限集是文件属组的权限而不是执行者的权限
S 2 用户组所在组权限
t 1 可添加到目录上,用户保护文件位
下面是被创建的文件a以及它所在的目录/tmp
hiro@v-pc:/tmp$ ls -l a
-rwSrwSr-- 1 hiro hiro 0 Apr  1 02:26 a
hiro@v-pc:/tmp$ ls -ld /tmp
drwxrwxrwt 8 root root 4096 Apr  1 02:26 /tmp


chmod
可用绝对数和字符串操作来操作权限
-R 递归处理所有目录
u/g/o/a +/- r/w/x 不同的用户组=/+/-不同的权限
444  用八进制给予权限


chown
chgrp
改变文件的用户和组信息


-r递归处理所有目录


umask 
设定当前进程创建的文件的默认权限


新文件的权限 666-umask值
新目录的权限 777-umask值




ln
创建symbol link 和hard link


ln -s /source/file /link/file
ln /source/file /link/file


使用hard link时,source和link必须在同一个文件系统中

  • shell元字符

shelll元字符可帮助你快速匹配文件名。注意这里的元字符和grep、awk等中的元字符概念是不同的。使用方式也不同。                                                                                         
* 代表0-n 个任意字符
? 代表任一字符
[] 表示任一包含在里面的字符
[!] 表示任一不包含在里面的字符
                                                                                

  • find 命令

find提供查找文件并对文件进行操作的功能。因为查找过程中总是要获取文件的inode信息,所以相当于对每个文件调用了stat系统调用,,相对来说,find是一个家中系统负载的命令。

-name 
根据名字的元字符匹配文件名。建议使用引号将命令引起,防止shell自己解析这些元字符

find ./ -name "[1-9]*.txt"
                                                                                                                                                                                                                                                              -perm
根据权限条件查找文件,(条件为八进制数字或字符符号)
                      
xxx  完全匹配该数字的权限    444 权限位必须是444                                                           
-xxx 每一组条件覆盖此条件    -004 other,只要有4以上权限即可              
/xxx   任一一组条件覆盖此条件 /444 或u或g或o,只要有4以上权限即可         

-prune
忽略此目录

-mtime +/-x
在x天之前或者之内

-newer
比条件指定的文件新                         
find ./ -newer xxx.file ! -newer yyy.file    比xxx文件新,但是比yyy文件旧

-type d/f
指定文件类型
                
-size +/-xx
指定文件大小                                                                             
                                                                 
根据以上条件才找到文件后,find可执行的操作方式包括

-exec 对所有文件进行这个命令
格式:
find ./ -exec ls -l {} \;  
主要大括号和\的空格,大括号是替代所有查找到的文件                                                                                         
-ok 
-print 默认动作,打印每个文件名                                                                                                                                                                                  
                                       

利用上述方法查找文件,可能由于一次找到的文件过多而使得exec命令不能执行。这是可利用xargs命令

xargs
将标准输入作为命令的参数,它能够根据系统的限制而决定每次传递给命令的参数个数。

-p 每次交互式提醒用户
-i 命令用{}代替                       
-n x 一次只传递x个参数 

辅助命令:

id 查看自己的用户名和所在组

groups 显示 所在组

touch -t mmddhhm file 修改文件的mtime      

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