Linux 文件系统

 

linux文件系统

文件通配符

*

匹配任意长度的文件名字符串(包括空字符串)
点字符(.),当它作为文件名或路径名分量的第一个字符时,必须显式匹配
斜线(/)也必须显式匹配

例: * file匹配file,makefile,不匹配.profile文件
try*c 匹配try1.c try.c try.basic
*c 匹配try1.c try.c try.basic

问号 ?

匹配任一单字符

方括号 [ ]

匹配括号内任一字符,也可以用减号指定一个范围
例: [A-Z]* * .[ch] [Mm]akefile
其中[A-Z] *表示的是一大些字母开头的文件名,这个与正则表达式区分开

注意

文件名通配符规则与正则表达式的规则不同,应用场合不同 不同种类shell通配符规则会略有些差别

文件名通配符的处理由shell完成,分以下三步

在shell提示符下,从键盘输入命令,被shell接受
shell对所键入内容作若干加工处理,其中含有对文件通配符的展开工作(文件名生成),生成结果命令
执行前面生成的结果命令

关键在于文件名的展开
grep a * .c try.c与grep 'a * .c' try.c的区别
设当前目录下有a1.c和a2.c
前者实际执行grep a1.c a2.c try.c
在a2.c和try.c中查找正则表达式a1.c
后者在try.c文件中查找正则表达式a*.c

ls

基本功能

不给出实参时,列出当前目录下所有文件和目录
实参为文件时,列出文件项
实参为目录时,列出目录下的所有文件项
在同一命令行中可以指定多个实参

选项-F (Flag)

若列出的是目录,就在名字后面缀以斜线 /
若列出的是可执行文件,就在名字后面缀以星号 *
若列出的是符号连接文件,就在名字后面缀以符号@
若列出的是普通文件,则名字面后无任何标记

Linux选项-h(human-readable)

以便于阅读的方式打印数值

长格式列表 -l

-rwxr-x--x l liang stud 519 Jul 5 15:02 arg

第1列:文件属性

第1字符为文件类型
- 普通文件 b 块设备文件(Block)
d 目录文件(Dir) c 字符设备文件(Char)
l 符号连接文件(Link) p 命名管道文件(Pipe)
文件的访问权限(rwx读权限,写权限,可执行权限)
2-4字符: 文件所有者对文件的访问权限
5-7字符: 同组用户对文件的访问权限
8-10字符:其它用户对文件的访问权限

第2列:文件link数,涉及到此文件的目录项数
第3列,第4列:文件主的名字和组名
第5列

普通磁盘文件:列出文件大小(字节数)
目录:列出目录表大小,不是目录下文件长度和
符号连接文件:列出符号连接文件自身的长度
字符设备和块设备文件:列出主设备号和次设备号
管道文件:列出管道内的数据长度

第6列:文件最后一次被修改的日期和时间
第7列:文件名

对于符号连接文件,附带列出符号连接文件的内容

-a (all)列出那些文件名首字符为圆点的文件(默认情况下这些文件不列出)

-s (size)列出文件占用的磁盘空间

-i (i-node)列出文件的i节点号

-d (directory)当ls的参数是目录时,不象默认的情况那样列出目录下的文件,而是列出目录自身的信息

比如 ls -d只是列出 当前目录自身的信息,而ls会列出目录下所有文件项

cp 拷贝文件

cp file1 file2
cp file1 file2 ... filen dir

mv

mv file1 file2
mv file1 file2 ... filen dir
mv dir1 dir2
可以给文件改名

rm

rm file1 file2 ... filen

选项

-r 递归地(Recursive)删除实参表中的目录,也就是删除一整棵目录树。
-i 每删除一个文件前需要操作员确认(Inform)
-f 强迫删除(Force)。只读文件也被删除并且无提示

显式的区分选项和对象

许多UNIX命令(如cp,ls,mv,rm,cat,grep,set等)用--显式地标志命令行选项的结束,识别以-开头的处理对象。如: rm -- -i (删除文件-i) ,因为-i也是合法发文件名啊

pwd 当前工作目录

创建目录mkdir

mkdir除创建目录外,系统自动建立文件.与..

选项-p,自动创建路径中不存在的目录。

删除目录rmdir

要求被删除的目录除.与..外无其它文件或目录 其他命令:rm -r sun/work.d

拷贝文件 目录

cp命令选项–r,递归地复制一个目录

 cp -r dir1 dir2

若dir2不存在,则新建子目录,并将dir1下内容拷入 若dir2已存在,则将所有文件拷入目录dir2

选项–v,冗长(verbose)方式

复制时列出所拷贝的文件名

选项–u,增量拷贝(update),便于备份目录

就是说如果文件名不一样,当然要直接拷贝,一样的话看时间,如果目标目录的时间更新,就不拷贝了

命令touch

将文件的最后一次修改时间设置为当前时间,但不修改文件内容。例如:touch *.[ch]

find在目录中查询文件

功能

find命令从指定的查找范围开始,递归地查找子目录,凡满足条件的文件或目录,执行规定的动作
递归查找,是一种遍历目录树的手段
就是find 文件列表 筛选条件/选项 动作
如: find verl.d ver2.d -name '*.c' -print

条件的选项

-name wildcard
文件名匹配,允许使用文件通配符(注意必需的引号)
-type
f:普通文件 d:目录 l:符号连接文件
c:字符设备文件 b:块设备文件 p:管道文件
-inum i-node-number 指定i节点号
-size ±nbytesc 指定文件字节数
-size ±nblocks 指定磁盘存储块数
-mtime ±ndays 文件最近修改时间
-atime ±ndays 最近访问(读/执行)时间
-maxdepth 最大递归深度

执行动作的选项

-print
打印查找的文件的路径名
-exec
对查找到的目标执行某一命令
在-exec及随后的分号之间的内容作为一条命令,{}代表所查到的路径名
-ok
与-exec类似,只是对查找到符合条件的目标执行一个命令前需要经过确认

find  .  !  -type d -links +2 -print 
从当前目录开始检索link数大于2的非目录文件
条件“非”用!
注意:!号与-type之间必须保留一空格

 find . -size +100000c \( -name core -o   -name '*.tmp' \) -print
寻找大于100K的名叫core或有.tmp后缀
使用了两条件“或” (-o)及组合(圆括号)
不要遗漏了所必需的引号,反斜线和空格,尤其是圆括号前和圆括号后。圆括号是shell的特殊字符

find / -name make -print -exec ls -l {} \;
-exec及随后的分号之间的内容作为一条命令执行
shell中分号有特殊含义,前面加反斜线\
{}代表所查到的符合条件的路径名。注意,两花括号间无空格,之后的空格不可省略,把find的结果作为参数放在{}的位置

xargs:构造参数列表并运行命令

将标准输入构造为命令的命令行参数,但是一般使用管道来做。。
你要知道,凡是能够使用标准输入的地方,都能使用管道,意思就是说将管道重定向到标准输入去
find . -name CVS -print | xargs rm -rf
将前面的结果重定向为后面的输入的参数

文件的归档和压缩处理【待补充】

tar [ctx][v][f device] file-list

-c Create创建新磁带
-x eXtract抽取。从磁带中抽取指定的文件
-t Table列表。磁带上的文件名列表
-v: Verbose冗长。tar每处理一个文件,就打印出文件的文件名,并在该名前冠以功能字母
-f: File指定设备文件名
-z:用gzip压缩归档

列出压缩文件中的内容

tar -tzvf test.tar.gz 

一般归档

tar -czvf test.tar.gz /test
zip -r test.zip /test 

解压缩

tar -xzvf test4.tar.gz 
upzip test.zip 

其他文件命令

stat filename 文件的i节点信息

df: 文件系统空闲空间
-v 列出文件存储区总长度,空闲空间和百分比
-i 列出i节点使用情况

普通文件的硬链接

ln file1 file2
为file1建立了一个硬链接file2
file1与file2同时存在时,地位完全平等 删file1文件,则file2仍存在但link数减1 硬连接,只限于同一文件系统中的普通文件

符号连接

用特殊文件“符号连接文件”来实现,文件中仅包括了一个路径名,符号连接引用的时候其实就是把路径名给拿出来了。

ln -s users_on sym.link

这样就创建了文件sym.link,
类型为l,大小为8字节,文件中只存放users_on字符串
文件的最后一次写时间以后不再变化
一旦建立了符号连接,删除操作删除的是符号连接文件,其它所有操作都将访问符号连接所引用的文件

文件权限

读权限

若无读权限,那么“目录表”文件不许读,ls会失败

写权限

若无写权限,那么“目录表”文件不许写
创建文件,删除文件,文件改名会修改目录文件
修改文件不需要修改目录文件,需要修改i节点
目录无写权限不是指目录下所有文件禁止写

执行权限

有执行权限意味着分析路径名过程中可检索该目录
cat /a/b/c 要求/,/a,/a/b三目录有x权限,c文件有读权限;否则,命令执行失败
cd ../st8要求当前目录,..和st8必须有x权限

修改权限,只允许文件主和超级用户修改文件权限

字母形式

chmod [ugoa][+-=][rwxst] 文件名表
u--user  文件主的权限
g--group 同组用户的权限
o--other 其他用户权限
a--all   所有上述三级权限
(t--Sticky, s--SUID)

例:

 chmod u+rw *  
 chmod go-rwx *.[ch]  
 chmod u=rx try2

数字形式(八进制数字)

例:chmod  674  xyz1 xyz2
八进制:     6      7      4 
二进制:     110   111  100
权限:       rw-   rwx  r--

umask决定文件/目录的初始权限

umask 命令,打印当前值
unamsk num 设置当前值
-S选项,打印出具体的权限情况

umask -S
u=rwx,g=rwx,o=rx

umask通过反码的形式决定当前你创建文件/目录的初始权限

总结下来:

一、文件基数为666,目录为777,即文件无设x位,目录可设x位。
二、chmod是设哪个位,哪么哪个位就有权限,而umask是设哪个位,则哪个位上就没权限。

如:umask值为022,则默认目录权限为755,默认文件权限为644

 

posted @ 2017-03-21 21:47  Zview  阅读(234)  评论(0编辑  收藏  举报