文件操作
对于文件,我们可以读取(read),写入(write)和运行(execute) 。读取是从已经存在的文件中获得数据 。写入是向新的文件或者旧的文件写入数据 。如果文件储存的是可执行的二进制码,那么它可以被载入内存,作为一个程序运行 。在Linux的文件系统中,如果某个用户想对某个文件执行某一种操作,那么该用户必须拥有对该文件进行这一操作的权限 。文件权限的信息保存在文件信息(metadata)中, 见下一节 。
文件附加信息 (metadata)
文件自身包含的只有数据 。文件名实际上储存在目录文件 。除了这些之外,还有操作系统维护的文件附加信息,比如文件类型,文件尺寸,文件权限,文件修改时间,文件读取时间等 。可以用ls命令查询文件信息($ls -l file.txt),得到如下结果:
代码如下:
-rw-r--r-- 1 vamei vamei 8445 Sep 8 07:33 file1.txt
各个部分的含义如下:
1.我们先介绍最开始的-,它表示文件类型,说明file1.txt是常规文件(如果是目录文件,则应显示d) 。
2.随后有九个字符,为rw-r--r--,它们用于表示文件权限 。这九个字符分为三组,rw-, r--, r--,分别对应拥有者(owner),拥有组(owner group)和所有其他人(other) 。回顾Linux开机启动 ,登录后,我会有一个用户身份和一个组身份, 相当于我的名片 。第一组表示,如果我的名片上的用户身份证明我是该文件的拥有者,那么我就可以对该文件有读取(r),写入(w)该文件的权限,但不拥有执行(-,如果拥有执行权限,则为x)该文件的权限 。第二组表示,如果我的名片上的组身份证明我所在的组是该文件的拥有组的一员,那么我有从该文件读入的权限 。第三组表示,如果我的名片显示我既不是拥有者,也不是拥有组的一员,那么我只有读入的权限 。当我想要进行一个读取操作时,Linux会先看我是否是拥有者下文会进一步解释拥有者和拥有组 。
3.后面的1是硬连接(hard link)数目(link count) 。
4.之后的vamei表示用户vamei是文件的拥有者(owner),文件的拥有者有权更改文件权限(比如改为rwxrwxrwx) 。而后面的vamei文件的拥有组是组vamei 。文件的拥有者和拥有组在文件创建时就附加在文件上(相当于给文件上锁,只有有合适名片的用户才能打开操作) 。要注意,Linux有一个超级用户root (也叫做根用户),该用户拥有所有的文件 。
5.随后的8445表示文件大小,单位为字节(byte) 。
6.Sep 8 07:33表示文件的上一次写入的时间(modification time) 。实际上在文件附加信息中还包含有文件的上一次读取时间(access time),没有显示出来 。
软链接 (soft link, or symbolic link)
如上讨论硬链接时说到的,软链接不会影响文件的link count 。如果还记得windows系统的快捷方式的话,Linux的软链接(soft link,也叫做symbolic link)就是linux的快捷方式 。软链接本质上是一个文件,它的文件类型是symbolic link 。在这个文件中,包含有链接指向的文件的绝对路径 。当你从这个文件读取数据时,linux会把你导向所指向的文件,然后从那个文件中读取(就好像你双击快捷方式的效果一样) 。软链接可以方便的在任何地方建立,并指向任何一个绝对路径 。
软链接本身也是一个文件,也可以执行文件所可以进行的操作 。当我们对软链接操作时,要注意我们是对软链接本身操作,还是对软链接指向的目标操作 。如果是后者,我们就说该操作跟随链接指引(follow the link) 。
umask
当我们创建文件的时候,比如使用touch,它会尝试将新建文件创建为权限666,也就是rw-rw-rw- 。但操作系统要参照权限mask来看是否真正将文件创建为666 。权限mask表示操作系统不允许设置的权限位,比如说037(----wxrwx)的权限mask意味着不允许设置设置group的wx位和other的rwx位 。如果是这个权限mask的话,最终的文件权限是rw-r----- (group的w位和other的rw位被mask) 。
推荐阅读
- 酒店入住登记系统 网上用身份证号怎么查宾馆记录
- 华为手机如何退出鸿蒙系统
- Linux初学者学习命令有什么意义?
- 什么是Linux系统架构?
- 深入理解Linux文本流
- 初次使用Linux系统时常遇到的问题汇总
- 加快Linux文件拷贝速度的两大方法
- 如何快速清空Linux文件内容
- Linux进程的相关知识介绍
- Linux下rz命令使用的实例详解
