内容纲要

七种文件类型

在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安装包文件。