在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. React 中的 refs的应用

    React Refs React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上. 这个特殊的属性允许你引用 render() 返回的相应的支撑实例( back ...

  2. 高级函数-case

    case函数 (适合区间,>,<判断)    case when 判断表达式 then         when 判断表达式 then         .....    end     s ...

  3. WinServer-IIS-woff字体不显示问题

    ASP.NET mvc发布到IIS之后,访问网站的时候,发现woff字体没有加载 百度发现很多博客上的教程是这样的,在IIS管理器中的MIME选项中添加类型 但是重新使用IIS发布后,新添加的字体就会 ...

  4. 10.2.0.4 to 10.2.0.5 Installation of Patch Set Release (Windows)

    环境:10.2.0.4集群数据库zlm10g(双节点,zlm10g1,zlm10g2) 系统:Windows 2003 Server 64Bit 内存:2G RAM 存储:ASM 目标:把集群数据库从 ...

  5. Android提高UI性能技巧

    提高UI性能的方法事实上有非常多在实际的开发中都已经用到了,在此做一下总结. 1.降低主线程的堵塞时间 若一个操作的耗时较长(超过5秒),我们应该将其放入后台线程中运行.仅仅在须要改动UI界面时通知主 ...

  6. Oracle在更改机器名后服务无法启动的解决方法

    Oracle改变机器名后会导致服务无法正常启动,能够通过下列操作解决: 1.oracle\product\10.2.0\db_3\network\ADMIN文件夹下,listener.ora文件里的L ...

  7. JavaScript DOM(一)

    文件夹: DOM家谱树 节点的基本属性和方法 document与getElement方法 DOM家谱树 DOM能够将不论什么HTML或XML文档描绘成一个由多层次节点构成的结构.当中节点被分为几种不同 ...

  8. Cocos2d-x 多点触摸

    多点触摸的实现步骤与单点触摸类似,setTouchEnabled(true)开启触摸功能,注冊触摸事件,重载多点触摸函数:ccTouchesBegan(開始).ccTouchesMoved(移动).c ...

  9. HDU 5375 Gray code(2015年多校联合 动态规划)

    题目连接 : 传送门 题意: 给定一个长度为的二进制串和一个长度为n的序列a[],我们能够依据这个二进制串得到它的Gray code. Gray code中假设第i项为1的话那么我们就能够得到a[i] ...

  10. 2435: [Noi2011]道路修建(树上操作)

    2435: [Noi2011]道路修建 题目:传送门 题解: 建完边之后以1为根建树,统计深度和各个点的子树大小(包括自己) 询问的时候:答案=长度*abs(n-深度大的点的子树大小*2) ans+= ...