Linux文件类型简单整理说明

回复 收藏
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。
Linux文件类型常见的有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等。
1. 普通文件
用ls -l来查看某个文件的属性,可以看到-rwxrwxrwx,值得注意的是第一个符号是-,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm命令。 另外,依照文件的内容,又大略可以分为:
1>. 纯文本档(ASCII):
这是Linux系统中最多的一种文件类型,称为纯文本档是因为内容为使用者可以直接读到的数据,例如数字、字母等等。 几乎只要可以用来做为设定的文件都属于这一种文件类型。举例来说,你可以用命令: cat ~/.bashrc 来看到该文件的内容。 (cat 是将一个文件内容读出来的指令).
2>. 二进制文件(binary):
Linux系统其实仅认识且可以执行二进制文件(binary file)。Linux当中的可执行文件(scripts, 文字型批处理文件不算)就是这种格式的文件。cat就是一个binary file。
3>. 数据格式文件(data):
有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,Linux在使用者登录时,都会将登录的数据记录在 /var/log/wtmp那个文件内,该文件是一个data file,他能够透过last这个指令读出来! 但是使用cat时,会读出乱码,因为他是属于一种特殊格式的文件。
2. 目录文件
在某个目录下执行ls -lh命令时,可以看到drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。
3. 字符设备或块设备文件
进入/dev目录,列一下文件,会看到类似如下的:
[root@localhost ~]# ls -al /dev/tty
crw-rw-rw- 1 root tty 5, 0 11-03 15:11 /dev/tty
[root@localhost ~]# ls -la /dev/sda1
brw-r----- 1 root disk 8, 1 11-03 07:11 /dev/sda1
可以看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备。可以看到 /dev/sda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备。
这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux发行版本中,一般不用手动创建设备文件。因为这些文件是和内核相关联的。
与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下!通常又分为两种:
区块(block)设备档:
就是一些储存数据, 以提供系统随机存取的接口设备,例如硬盘与软盘等。 可以随机的在硬盘的不同区块读写,这种装置就是成组设备!你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]!
字符(character)设备文件:
亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是一次性读取的,不能够截断输出。 举例来说,不可能让鼠标跳到另一个画面,而是滑动到另一个地方!第一个属性为 [ c ]。
4. 数据接口文件(sockets):
数据接口文件(或者:套接口文件),这种类型的文件通常被用在网络上的数据承接了。使用者可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket来进行数据的沟通了。第一个属性为 [ s ], 最常在/var/run这个目录中看到这种文件类型了。
例如:当启动MySQL服务器时,会产生一个mysql.sock的文件。
[root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock
注意此文件的属性的第一个字符是 s。
5. 符号链接文件:
查看文件属性时,会看到lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名 新文件名 。怎么理解呢?这和Windows操作系统中的快捷方式有点相似。
符号链接文件的创建方法举例:
[root@localhost test]# ls -lh log2012.log
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
[root@localhost test]# ln -s log2012.log  linklog.log
[root@localhost test]# ls -lh *.log
lrwxrwxrwx 1 root root   11 11-22 06:58 linklog.log -> log2012.log
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
6. 数据输送文件(FIFO,pipe):
FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p] 。

ls -l命令查询文件属性信息详解


用ls -l命令查看某一个目录会得到一个7个字段的列表。
以root用户的HOME目录为例:
[root@centos-test1 ~]# ls -l
总用量 44
drwxr-xr-x. 3 root root  4096 12月 20 18:57 111
-rw-------. 1 root root  1181 12月 17 22:03 anaconda-ks.cfg
-rw-r--r--. 1 root root 23776 12月 17 22:03 install.log
-rw-r--r--. 1 root root  5775 12月 17 21:59 install.log.syslog
第1行:总用量(total)
Total后面的数字是指当前目录下所有文件所占用的空间总和。可以使用ls –lh查看,也可使用ls –alh查看。
第1列字段: 文件属性字段
drwxr-xr-x. 3 root root  4096 12月 20 18:57 111
文件属性字段总共有10个字母组成;第一个字符代表文件的类型。
第1字符的后面9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)。
其中前三个表示文件所属主的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
第2列字段:文件硬链接数
如果是一个普通文件不是目录,此时这一字段表示这个文件所具有的硬链接数
-rw-r--r--. 1 root root 23776 12月 17 22:03 install.log
或者链接占用的节点(针对于链接文件)
lrwxrwxrwx. 1 root root           3 12月 20 18:30 cdrom -> sr0
如果是一个目录,则第2字段表示该目录所含子目录的个数。
drwxr-xr-x. 2 root root  4096 12月 20 18:56 111
新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录。为什么新建的目录下面会有两个子目录呢?因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录". .",这两个默认子目录是隐藏的,ls -a可以看到。每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。
第3列字段:文件(目录)所属主
drwxr-xr-x. 2 root root  4096 12月 20 18:56 111
该字段表示此文件是属于哪个用户。linux类系统都是多用户系统,每个文件都有它的拥者。只有文件的拥有者才具有改动文件属性的权利。当然,root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l查看该文件将显示一个代表用户存在前ID号的数字。 因为linux操作系统的文件系统对每个文件记录文件所有者的ID,而非用户名。
第4列字段:文件(目录)拥有者所在的组
drwxr-xr-x. 2 root root  4096 12月 20 18:56 111
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。
可以在useradd的时候用-g指定该用户所在的主组,用-G指定其他组 。
格式如下:useradd –g 组名 用户名
第5列字段: 文件所占用的空间(以字节为单位)
-rw-r--r--. 1 root root 23776 12月 17 22:03 install.log
如果是目录,则表示该文件夹的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小。很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了。
第6列字段:文件(目录)最近访问(修改)时间
drwxr-xr-x. 2 root root  4096 12月 20 18:56 111
文件创建的时间可以通过touch命令来修改,另外,一个文件还有最后访问时间,最后修改时间等属性。这些属性可以用ls命令的其它参数显示出来。
第7列字段:文件名
drwxr-xr-x. 2 root root  4096 12月 20 18:56 111
如果是一个符号链接,那么会有一个 “->" 箭头符号,后面根一个它指向的文件名;
lrwxrwxrwx. 1 root root           4 12月 20 18:30 root -> sda3
2016-03-02 23:18 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: