Linux文件系统

唉,我最近真的很忙,甚至一天都很难保证有16小时的睡眠时间了,所以博客也更新怠慢了起来。今天更新的这篇文章主要是与Linux文件相关的概念。

Linux文件系统类型

随着Linux的不断发展,各方开源人士的大显神通,Linux所支持的文件系统类型也在迅速的扩充。Linux至今为止已经支持相当多的文件系统类型,但是不同版本的Linux发行版本支持的文件系统类型种类有所不同,这是ubuntu10.04所支持的文件系统类型:

walfred@ubuntu:/lib/modules/2.6.32-28-generic/kernel/fs$ ls

ubuntu10.04支持的文件系统类型 

之所以Linux能够支持这么多大的文件系统,Linux提供了一个叫做VFS的虚拟文件系统,VFS屏蔽了不同文件系统的差异,提供给用户统一的接口,比如open()、close()一个文件,而不需要特殊文件系统特殊对待。打个比方,Linux就像皇帝,不同的文件系统就是佳丽,VFS可以随心所欲一样拥有后宫佳丽3000一样,VFS也是Linux内核的一部分。

Linux文件类型

在Linux中,一共有四种文件类型,如下:

普通文件:比如文本文件,C语言源代码、shell脚本等。这个我们可以通过catmoreless等命令来查看或者使用vi/vim、gedit、emacs等文本编辑工具来查看内容,使用mv来改名字等。

我们可以试下:

walfred@ubuntu:~/ourunix/c_coding$ ls -ltr

total 120

-rw-r--r-- 1 walfred walfred 1199 2011-09-10 06:40 cos_line.c

-rw-r--r-- 1 walfred walfred    0 2011-09-10 06:40 gcc

-rwxr-xr-x 1 walfred walfred 7181 2011-09-10 06:40 cos_line

drwxr-xr-x 2 walfred walfred 4096 2011-09-16 23:22 zhidao

-rw-r--r-- 1 walfred walfred  400 2011-09-10 06:48 acos.c

-rwxr-xr-x 1 walfred walfred 7213 2011-09-10 06:48 acos

普通文件的标志是最前面“-”,如“-rwxrwxrwx”。

目录文件:在上面的一坨带有“-”开头的普通文件,我们看到一个与其他不一样的文件:

drwxr-xr-x 2 walfred walfred 4096 2011-09-16 23:22 zhidao

该文件前头drwxr-xr-x不是“-”,而是一个字母“d”,这就说明了该文件不是一个普通文件,而是一个目录文件(directory)。

链接文件:链接文件是指向同一索引节点的目录条目。可以用ls来查看,连接文件的标志是“l”,而文件后面是用“—>”指向所链接的文件,这个可以暂时借助于windows下的快捷方式来理解,不过之后会慢慢讲到其与快捷方式的一些不同点。

同样我们可以看下:

walfred@ubuntu:/usr/src$ ls

linux-headers-2.6.32-28  linux-headers-2.6.32-28-generic

walfred@ubuntu:/usr/src$ ls -ltr linux-headers-2.6.32-28

total 148

-rw-r--r--  1 root root  2430 2009-12-02 19:51 Kbuild

-rw-r--r--  1 root root 55902 2011-01-10 13:20 Makefile

drwxr-xr-x  3 root root  4096 2011-02-11 05:24 virt

…省略一万行…

drwxr-xr-x  2 root root  4096 2011-02-11 05:24 block

drwxr-xr-x 25 root root  4096 2011-02-11 05:24 arch

再看--

walfred@ubuntu:/usr/src$ ls -ltr linux-headers-2.6.32-28-generic/

total 656

-rw-r--r-- 1 root root 651949 2011-01-10 17:21 Module.symvers

lrwxrwxrwx 1 root root     29 2011-09-09 16:14 fs -> ../linux-headers-2.6.32-28/fs

lrwxrwxrwx 1 root root     35 2011-09-09 16:14 firmware -> ../linux-headers-2.6.32-28/firmware

lrwxrwxrwx 1 root root     34 2011-09-09 16:14 drivers -> ../linux-headers-2.6.32-28/drivers

lrwxrwxrwx 1 root root     40 2011-09-09 16:14 Documentation -> ../linux-headers-2.6.32-28/Documentation

…省略一万行…

lrwxrwxrwx 1 root root     33 2011-09-09 16:14 ubuntu -> ../linux-headers-2.6.32-28/ubuntu

lrwxrwxrwx 1 root root     33 2011-09-09 16:14 Kbuild -> ../linux-headers-2.6.32-28/Kbuild

lrwxrwxrwx 1 root root     26 2011-09-09 16:14 source -> /build/buildd/linux-2.6.32

可以看出linux-headers-2.6.32-28-generic目录下的大部分文件都是链接于linux-headers-2.6.32-28。

特殊文件:Linux的一些设备,如磁盘,终端,打印机等,都在文件系统中表示出来,这类文件就是特殊文件,比如下面我讲建立一个字符设备文件:

walfred@ubuntu:~/ourunix/embedded$ sudo mknod ./test c 250 1

walfred@ubuntu:~/ourunix/embedded$ ll

total 8

drwxr-xr-x 2 walfred walfred   4096 2011-10-16 01:32 ./

drwxr-xr-x 4 walfred walfred   4096 2011-10-16 01:29 ../

crw-r--r-- 1 root    root    250, 1 2011-10-16 01:32 test

可以看到这个test就是一个字符设备了、它的标志为“c”。

在介绍了上述文件类型之后,希望您能够记住一句话,“Linux一切皆是文件”,当然这句话你暂时不要深究,等到橘子红了的时候你自然就会明白。

汇总下我们遇到的常见文件类型:

“-”表示普通文件;

“d”表示目录文件;

“l”表示链接文件;

“c”表示字符设备;

“b”表示块设备;

“p”表示管道文件,比如FIFO文件;

“f”表示堆栈文件,比如LIFO。

Linux文件属性

刚才我们在使用命令ls –ltr的时候,看到了除了表示不同文件类型(“-”,“d”,“l”,“c”)的时候,还看到了有一排这样的字母“rwxrwxrwx”,晓得什么是视觉恐慌吗?这些罗刹数字就是滴!不要怕,听我一一道来。

这个举个例子最好:

walfred@ubuntu:~/ourunix/embedded/ex$ ls -ltr

total 4

-rw-r--r-- 1 walfred walfred    0 2011-10-16 01:42 file.txt

drwxr-xr-x 2 walfred walfred 4096 2011-10-16 01:43 directory

其中,第一列的“-”是标志file.txt是一个普通文件,而第二列的“d”表示directory是一个目录文件;

Linux中的文件拥有者可以把文件的访问属性设成3种不同的访问权限:可读(r),可写(w),可执行(x)。文件又有三个不同的用户级别:文件拥有者(u),所属的用户组(g),系统里其他的用户(o)。

第一个字符后有3个三位字符组:

第1个三位字符组表示对于文件拥有者(u)对该文件的权限;

第2个三位字符组表示该文件所属组的其他拥有者(g)对该文件的权限;

第3个三位字符组表示系统其他用户(o)对该文件的权限。

通过下图,兴许能够更清晰的表现出来。

文件详细信息 

另外要说的是,目录权限和文件权限有一定的区别,对于目录而言,r表示允许列出该目录下的文件和子目录,w代表允许生成和删除该目录下的文件,x代表允许访问该目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值