参考:
《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 文件大小
以上输出类似于下面的
-
hiro@v-pc:~/code/cpp_learning$ stat a.out
-
File: `a.out'
-
Size: 8360 Blocks: 24 IO Block: 4096 regular file
-
Device: 801h/2049d Inode: 51035 Links: 1
-
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ hiro) Gid: ( 1000/ hiro)
-
Access: 2013-03-23 09:48:07.945269545 +0000
-
Modify: 2013-03-17 17:21:57.080531828 +0000
-
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必须在同一个文件系统中
shelll元字符可帮助你快速匹配文件名。注意这里的元字符和grep、awk等中的元字符概念是不同的。使用方式也不同。
* 代表0-n 个任意字符
? 代表任一字符
[] 表示任一包含在里面的字符
[!] 表示任一不包含在里面的字符
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
阅读(1764) | 评论(0) | 转发(0) |