在Linux系统中,假设我们想要知道一个文件的详细信息,那么最简便的方法自然就是ls命令了。例如以下图所看到的:当在shell输入命令"ls -l old"时,在下方就会显示出关于文件old的一些

信息.以下就从左到右逐步分析每部分输出所代表的详细含义。当中输出的第一部分包括十个字符。当中第一个字符用于表示文件的类型。那么我们就先来说说在UNIX/Linux系统中的文件类型好了。

文件类型:

事实上在Linux系统中主要就是两种文件,一种是常规文件(regular file),还有一种就是文件夹(directory)。

開始可能认为非常奇怪。文件夹怎么会是文件呢?事实上文件夹仅仅是存储了该文件夹下的文件或子文件夹的名称和相应i-node(包括了基本上关于相应文件全部信息的结构)的编号的一个特殊文件而已。

当然,除了上述的两种文件类型,还有:块设备文件(Block special device)。字符设备文件(character special device),FIFO(管道)。Socket(套接字),Symbolic
link(符号链接)这几种文件类型。

详细的在这里就不展开了。

如在上图中第一位为‘-’。则表示该文件为常规文件。其它类型的文件通过该位显示的字符应该也非常easy推断出来。

文件权限:

以下我们就来看看后9位字符代表的意思。

说是9位,事实上我们把它们分成3组,每组代表的意思是几乎相同的。我们都知道Linux系统是一个多用户的系统,所以对于一个文件而言,可能有除创建者以外的其它人想要对文件进行操作。

这时我们就有必要对文件的操作权限进行设置了。

这三组字符从左到右针对的对象依次是文件的创建者(user),文件创建者的同组成员(group)。除以上二者以外的其它用户(others)。而每组的3个字符,从左到右依次显示为  rwx  当中r代表读的权限,w代表写的权限,x代表可运行的权限。例如以下图所看到的,我想读一个名字叫new的文件。可是它的全部权限都被屏蔽了。当我输入命令:
more new的时候,shell就会提示权限不足。

对于其它操作也可类推获得。

可是在Linux中有一个神一般存在的用户,就是传说中的root或者叫超级用户(superuser)。

它有对系统的一切权限。能够对随意文件进行操作。所以之前提到的那些限制对它是没有效果的。

链接数:

再往右显示的数字1代表的是。该文件有1个链接。当中链接又分硬链接(hard link)和符号链接(symbolic link)两种类型。此处显示的应为硬链接数。

当中硬链接是直接运行文件相应的inode的。而符号链接则没有,它仅仅是包括了所链接文件的位置信息。类似于windows中的快捷方式。

须要注意的是,非常多时候,你所谓的删除一个文件,仅仅是删除了该文件的一个链接。

想要真正删除一个文件的内容,必须满足两个条件:1.文件的链接数为0。2.没有进程打开该文件。

UID和GID:

前面已经说过了,一个文件肯定是由一个用户创建的。那么自然在文件信息中须要保存,该文件的创建者,也就是user-ID简称UID,同一时候还有该创建者所在组的ID,group-ID,简称GID。所以接下来显示的monster monster就分别相应了文件创建者monster和monster所在的组。

文件大小:

然后显示的就是相应文件的大小了,样例中的文件大小显示的是0,单位是字节。

须要注意的是:假设文件的类型是字符链接,那么它的大小就是它所运行的文件的文件名称的字符数。

文件时间:

接下来显示的就是文件时间了。对于一个文件,一般保存了3个时间:1.st_mtime,上一次文件改动的时间(modification time),2.st_atime,上一次文件打开的时间(access time)3.st_ctime,上一次文件状态改变的时间(changed status time)。

当中最令人困惑的肯定是st_mtime和st_ctime,文件改动了。那状态不就改变了么?状态改变。那肯定就是文件改动了啊?事实上不是这种。第一个st_mtime指的是文件内容的改动,而st_ctime的状态指的是文件相应的inode中存储的
信息的改变,比如各种权限啊,UID。GID等等。所以说是全然不一样的。

文件名称:

显示在最后的自然就是文件名称,对于文件名称想说的是,它并不保存在文件相应的inode其中,而是保存在相应的文件夹文件里。这就引发了一个很有意思的现象。就是我们想要删除一个文件的时候,我们并不须要该文件的不论什么权限,而是须要该文件所在文件夹的写权限和运行权限。由于我们删除一个文件就是要将降低该文件相应inode的链接数。并将文件名称从相应的文件夹文件里去掉。

PS:以上就是通过命令 ls -l filename所引申出来的关于Linux文件系统的一些基本知识了。当然还有非常多的细节是没有涉及的。文件系统也远远没有那么简单。假设有什么错误,请大家及时指出来,能够让我改正。

想讨论的同学也能够评论留言。(*^__^*) 嘻嘻……

參考数目:《UNIX环境高级编程》

Linux 文件系统初步的更多相关文章

  1. linux文件系统详解

    最近在做磁盘性能优化,需要结合文件系统原理去思考优化方向,因此借此机会进一步加深了对文件系统的认识.在看这篇文章之前,建议先看下前面一篇关于磁盘工作原理的解读.下面简单总结一些要点分享出来: 一.文件 ...

  2. Linux文件系统学习(一)之相关概念⭐⭐⭐

    “一切皆是文件”是 Unix/Linux 的基本哲学之一.不仅普通的文件,目录.字符设备.块设备.套接字等在 Unix/Linux 中都是以文件被对待:它们虽然类型不同,但是对其提供的却是同一套操作界 ...

  3. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

  4. Linux文件系统

    今天学习了Linux文件系统,现在来做个小总结. 首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构. 清单 1. Linux 系统的顶层目录结构 / 根目录 ├── bin 存 ...

  5. linux 文件系统简介

    linux文件系统简介   文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...

  6. Linux文件系统层次结构标准

    该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...

  7. linux文件系统节点详解

    linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...

  8. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  9. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

随机推荐

  1. 聚类算法学习-kmeans,kmedoids,GMM

    GMM参考这篇文章:Link 简单地说,k-means 的结果是每个数据点被 assign 到其中某一个 cluster 了,而 GMM 则给出这些数据点被 assign 到每个 cluster 的概 ...

  2. IntelliJ IDEA could not autowire no beans of 'Decoder'

    IntelliJ IDEA could not autowire no beans of  'Decoder' 学习了:http://blog.csdn.net/u012453843/article/ ...

  3. H2数据库入门使用

    H2数据库入门使用 学习了: https://www.cnblogs.com/xdp-gacl/p/4171024.html http://www.cnblogs.com/xdp-gacl/p/417 ...

  4. 1)Win10-UWA开发 UWP应用操作方法、Windows 10应用程序的指南

    孙广东   2015.8.22 全部任务类型(比方在列表中显示数据或创建导航窗格)的说明和代码演示样例. 在这一节 包含例如以下: 主题 描写叙述 Accessibility 创建通用的Windows ...

  5. Making ViewState More Secure

    Unencrypted view state in ASP.NET 2.0 could leak sensitive information https://www.rapid7.com/db/vul ...

  6. Linux xhost命令详解

    xhost 命令用途 控制什么人可以访问当前主机上的增强 X-Windows. 语法 xhost [ + | - ] [ Name ] "+"表示增加,"-"表 ...

  7. Eclipse下载安装教程

    Eclipse下载安装 Eclipse是一款开源软件,免费,实用,也应该是大多数同学接触的第一款java集成开发环境(IDE),简单介绍下下载流程 1.进入官网 百度,Bing,或谷歌搜索Eclips ...

  8. C#~异步编程再续~你必须要知道的ThreadPool里的throw

    问题依旧存在 之前写过相关文章异步编程的文章,本文主要还是一点补充,之前在IIS经常发w3wp进程无做挂了的情况,但一直没能找到真正的原因,而查找相关资料,找了一些相关的文章,如await和async ...

  9. ui5 load josn

    sap.ui.jsview("ui5p.Test01", { /** Specifies the Controller belonging to this View. * In t ...

  10. HDU 2120 Ice_cream's world I【并查集】

    解题思路:给出n对点的关系,求构成多少个环,如果对于点x和点y,它们本身就有一堵墙,即为它们本身就相连,如果find(x)=find(y),说明它们的根节点相同,它们之间肯定有直接或间接的相连,即形成 ...