linux有哪些文件类型
七种文件类型
在Linux中一切都是文件,但文件都得有类型。那如何查看文件是什么类型了?
在Linux常见的文件类型有7种,分别如下所示:
文件属性 | 文件类型 |
---|---|
- | 常规文件,即file |
d | 目录文件 |
b | block device 即块设备文件,如硬盘;支持以block为单位进行随机访问 |
c | character device 即字符设备文件,如键盘支持以character为单位进行线性访问 |
l | symbolic link 即符号链接文件,又称软链接文件 |
p | pipe 即命名管道文件 |
s | socket 即套接字文件,用于实现两个进程进行通信 |
文件类型说明
-
普通文件类型最常使用的一类文件,其特点是不包含有文件系统信息的结构信息。通常用户所接触到的文件,比如图形文件、数据文件、文档文件以及声音文件都属于这种文件,这种类型的文件是按照其内部结构又可分为纯文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件。
-
- 纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到的数据,例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。
- 二进制文件(binary):系统其实仅认识且可以执行二进制文件(binary file)。Linux中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令cat就是一个二进制文件。
- 数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。举例来说,Linux在用户登入时,都会将登录数据记录在 /var/log/wtmp文件内,该文件是一个数据文件,它能通过last命令读出来。但使用cat时,会读出乱码。因为它是属于一种特殊格式的文件。
-
目录文件类型用于存放文件名以及其相关信息的文件,是内核组织文件系统的基本节点。目录文件可以包含下一级文件目录或者普通文件,在Linux中,目录文件是一种文件。能用 # cd 命令进入的。
-
块设备文件类型块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。
-
字符设备类型字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。
-
套接字文件类型这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。
-
管道文件类型是一种很特殊的文件,主要用于不同进程的信息传递。当两个进程需要进行数据或者信息传递时,可以使用通道文件,一个进程将需要传递的数据或者信息写入管道的一端,另一进程从管道的另一端取得所需要的数据或者信息,通常管道是建立在调整缓存中。
-
链接文件类型是一种特殊文件,指向一个真实存在的文件链接,类似于Windows下的快捷方式,链接文件的不同,又可分为硬链接文件和符号链接文件。
查看文件类型的三种方法
① ls -l 或 ls -ld
[root@localhost etc]# ls -l
总用量 1340
drwxr-xr-x. 3 root root 28 10月 27 08:08 accountsservice
-rw-r--r--. 1 root root 16 7月 19 2021 adjtime
-rw-r--r--. 1 root root 1529 4月 15 2020 aliases
drwxr-xr-x. 3 root root 65 12月 22 2021 alsa
drwxr-xr-x. 2 root root 4096 7月 27 2021 alternatives
lrwxrwxrwx. 1 root root 56 7月 12 2021 favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
-rw-r--r--. 1 root root 66 9月 10 2018 filesystems
lrwxrwxrwx. 1 root root 22 3月 28 2022 grub2.cfg -> ../boot/grub2/grub.cfg
略。。。。。。
② file 命令
[root@localhost etc]# file /etc/fstab
/etc/fstab: ASCII text
[root@localhost etc]# file /etc
/etc: directory
[root@localhost etc]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to ../boot/grub2/grub.cfg
[root@localhost etc]# file /bin/ssh
/bin/ssh: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=fd3393aa38fc9e09813c902bc1255355359ad902, stripped
[root@localhost etc]# file /dev/sr0
/dev/sr0: block special (11/0)
③stat 命令
[root@localhost etc]# stat /usr/sbin/ip
文件:/usr/sbin/ip
大小:663472 块:1296 IO 块:4096 普通文件
设备:fd00h/64768d Inode:1353488 硬链接:1
权限:(0755/-rwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:ifconfig_exec_t:s0
最近访问:2022-10-30 03:14:56.040030923 -0400
最近更改:2022-03-21 10:40:32.000000000 -0400
最近改动:2022-10-27 08:07:13.748329778 -0400
创建时间:2022-10-27 08:07:13.724330248 -0400
Linux中文件扩展名
windows里通过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有直接关系。但为了容易区分和兼容用户使用windows的习惯,linux还是会用扩展名来表示文件类型。举例如下:
● .tar、.tar.gz、.tgz、.zip、.tar.bz、tar.bzip2、.tar.xz、.zip、.xz表示压缩文件,创建命令一般为tar,gzip,zip等。
● .sh表示shell脚本文件,通过shell语言开发的程序。
● .pl表示perl语言文件,通过perl语言开发的程序。
● .py表示python语言文件,通过python语言开发的程序。
● .html、.htm、.php、.jsp、.do表示网页语言的文件。
● .conf表示系统服务的配置文件。
● .rpm表示rpm安装包文件。