Linux文件

在Linux下,一切皆文件。这是我们嵌入式Linux开发与应用这门课的老师经常挂在嘴边的一句话。足以体现出在Linux操作系统中,对于一切资源的管理都是对文件的操作。

Linux系统中每一个分区都是一个文件系统,都有自己的目录层次。Linux会将这些在不同分区的,单独的文件系统按一定的方式形成一个系统的总目录层次结构。

Linux下可以通过shell命令来操作文件,但是功能有一定限制;我们也可以通过系统调用或者C语言的库函数对文件进行操作。

  1. Linux下的文件主要包括两方面的数据:文件本身所包含的数据,以及文件属性,也称为元数据。
    文件属性包含文件大小,文件类型,文件所有者,文件权限以及文件最后修改时间。

  2. 目录在Linux下也是文件,称为目录文件。目录文件的内容是该目录的目录项,目录项是该目录下的文件和目录相关的信息。每当创建一个新目录的时候,OS会自动创建两个目录项——“.”和“..”
    “.”指向当前目录,“..”指向父目录。在根目录下,“.”和“..”指向的都是根目录。

  3. Linux采用的是标准的目录结构——树形结构(B树家族)

Linux既然采用了树形结构的目录形式,整个OS只有一棵文件树,这样方便OS对文件进行统一管理。Linux操作系统中的这颗文件树的树根叫做根文件系统,用“/”表示,可以通过使用cd /命令直接到达根目录。各个磁盘是通过挂载以文件夹的形式访问

文件名中不能出现/和空格,因为/是用来划分路径的,而空格是用来终止一个路径名的。

根文件系统:

  • /bin:该目录下存放供用户使用的完成基本维护任务的命令.

  • /boot:该目录下存放着和OS启动时使用的一些核心文件。

  • /dev:该目录中包含所有的系统设备文件。从该目录可以访问各种系统设备,它还包含了创建设备文件的MAKEDEV.

  • /home:该目录存储普通用户的个人文件,每个用户的主目录均在/home下以用户名命名的文件夹。

  • /etc:该目录包含系统和应用软件的配置文件。

  • /lib:该目录存放着系统最基本的共享链接库(相当于Windows下的DLL)和内核模块。

  • /lib64:如果是64位系统,它会有这个,存放64程序的共享链接库,同时也会有一个lib32.

  • /media:可移动设备的挂载点,OS通常把U盘等设备自动挂载到该目录下。在Ubuntu下,你的磁盘会被挂载在这里。

  • /opt:第三方的软件默认安装到这个位置。并不是每个Linux发行版都会创建这个目录。

  • /mnt:临时用于挂载文件系统的。一般情况下这个目录下是空的,在我们挂载分区的时候会在该目录下创建目录。

  • /proc:存在于内存中的虚拟文件系统,里面保存了内核和进程的状态信息。

  • /root:这是root(超级管理员)用户的主目录,于/home下的普通用户目录类型。

  • /sbin:供root用户使用的可执行文件,多是系统管理命令。

  • /usr:静态的用户级应用程序。

  • /tmp:该目录用于保存临时文件。

Linux文件分类:

  1. 普通文件:用户和OS的数据,程序等信息文件

  2. 目录文件:Linux文件系统将文件索引节点号和文件名同时保存在目录中,所以目录就是一张表。OS可以修改目录文件,用户只能读目录文件

  3. 设备文件:Linux下一切皆文件,设备也是文件。每一种I/O设备对应一个设备文件,存放于/dev下。

  4. 管道文件:这是Linux用于进程之间通信的文件,一个进程在管道这一段写入数据,另一个进程在管道的另一端读取数据。管道文件一般是FIFO文件。

  5. 链接文件:又被称作符号链接文件,它提供了一种共享文件的方式。它包含了指向文件的指针。

通过ls -l可以查看文件类型和属性

Linux文件_第1张图片

结果分多行显示,距离说明一下每行显示的意义。例如第一行exec这个文件的信息行。首先,我们看到这行以“-”开头,表示exec是一个普通文件。同时注意到第三行以d开头,这说明new是一个目录文件。

  • -:表示普通文件
  • d:表示目录文件
  • l:表示链接文件
  • c:表示字符设备
  • b:表示块文件
  • p:表示管道文件
  • f:表示堆栈文件

接着看第一个符号后面的信息,注意到后面仍旧有9个字符。这9个字符分成3组,即每3个一组,”w"表示可写,“r”表示可读,“x”表示可执行。第一组3个符号表示的是文件拥有者对该文件的权限;第二组3个符号表示该文件所在组的其他拥有者对该文件的权限;第3组表示系统其他用户对该文件的权限。

继续可以看到有个数字,对于普通文件,这个数字表示链接数,对于目录文件来说这个数字表示第一级子目录数。接下来的两组信息分别是文件拥有者和拥有者所在组,然后是文件大小(单位是字节,其中目录文件的大小就是4096),接着是文件最后的修改日期,最后就是文件名。

对目录文件的读权限,意味着可以查看目录下的所有文件列表;对目录的写权限意味着具有删除和移动目录的权限。

所有的目录文件都具有可执行权限,否则我们无法进行搜索,因此执行权限位也被称为搜索位。

Linux文件_第2张图片

另外,可以看到,文件的颜色是不同的。其实不同的颜色就代表了文件的类型是什么。

绿色:文件是绿色代表文件是可执行文件,例如上图中的cat。

白色:白色表示文件是普通文件。

红色:红色代表文件是压缩文件。

灰色:其他文件。

蓝色:蓝色代表这是一个目录文件。

青色:青色代表的是连接文件。

黄色:黄色代表设备文件。

Linux文件_第3张图片

在Linux下以"."开始的文件是隐藏文件,例如上图的.swm就是一个隐藏压缩文件。

l表示是一个链接文件,当使用ls -l命令列举当前目录下文件以及文件属性的时候,就会显示软链接真正的位置,如上图所示。我们可以看到ping4和ping6都是ping命令的链接。 当然了,ping是红色的,代表它是压缩文件,但是它同时也是可执行文件。它就是我们在command下使用的ping命令。

 

你可能感兴趣的:(Linux环境编程)