文件基本属性
通过ls -l命令可以列出本目录下所有的文件的属性。
root@ubuntu:~# ls -l
total 1944
-rw-r--r-- 1 root root 1984663 2月 18 18:22 DSC_1013.jpg
drwxr-xr-x 2 root root 4096 6月 13 10:42 testDir
每一条记录最左边的十个字符表示了文件的类型和文件的权限。
其中第一个字符的含义如下:
- [ - ]表示普通文件
- [ d ]表示目录
- [ l ]表示链接文件
- [ b ]表示装置文件里面的可供储存的接口设备,例如硬盘
- [ c ]表示装置文件里面的串行端口设备,例如键盘、鼠标
一切皆文件
在Linux系统中的一切都被当做文件来看待,甚至包括目录,磁盘,打印机等
普通文件
普通文件即Linux中的一般文件,比如用户创建的文本文件或者编译生成的可执行文件。
目录
在Linux中,目录也作为一种特殊的文件存在
设备文件
硬件设备在Linux也被作为文件来看待,比如硬盘、打印机等等,这之中包含了可供存储的接口设备和串行端口设备,分别对应的字符标识是"b"和"c"。
常见的可供存储的接口设备有内存、硬盘等等存储设备
而串行端口设备是指那些逐位数据传输即时读取的设备,如鼠标、键盘等等
链接文件
-
软链接
相当于Windows系统中的快捷方式,当软链接指向的文件被删除时,该链接处于无效状态,即不能通过该链接继续读取被删除的文件。 -
硬链接
相当于新建了一个文件名指向被链接文件的inode节点。一般情况下,一个文件的文件名指向一个inode节点,该节点存储了文件的元数据,比如文件所有者,权限和创建时间等信息。在Linux系统中一个inode节点允许多个文件名来关联它,硬链接就相当于新创建了一个关联,这样在删除原有文件,即旧关联时依然不会影响新建的硬链接。所以删除原有文件名依然可以通过硬链接来访问文件数据。
Linux文件存储方式如下图所示
关于软硬链接的区别可以参考下节代码的执行结果。
链接的创建
使用ln
命令创建链接,常见用法如下:
ln [option] targetFile linkName
对于option可以用以下几个参数:
- -b 删除,覆盖以前建立的链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -s 软链接(符号链接)
- -v 显示详细的处理过程
链接创建与测试如下:
uh3ng@uh3ng-VirtualBox:~/uh3ng$ touch f1
uh3ng@uh3ng-VirtualBox:~/uh3ng$ ln f1 f2
uh3ng@uh3ng-VirtualBox:~/uh3ng$ ln -s f1 f3
uh3ng@uh3ng-VirtualBox:~/uh3ng$ ls -l
总用量 0
-rw-rw-r-- 2 uh3ng uh3ng 0 6月 19 11:51 f1
-rw-rw-r-- 2 uh3ng uh3ng 0 6月 19 11:51 f2
lrwxrwxrwx 1 uh3ng uh3ng 2 6月 19 11:51 f3 -> f1
uh3ng@uh3ng-VirtualBox:~/uh3ng$ echo "I am f1 file" >> f1
uh3ng@uh3ng-VirtualBox:~/uh3ng$ cat f1
I am f1 file
uh3ng@uh3ng-VirtualBox:~/uh3ng$ cat f2
I am f1 file
uh3ng@uh3ng-VirtualBox:~/uh3ng$ cat f3
I am f1 file
uh3ng@uh3ng-VirtualBox:~/uh3ng$ rm f1
uh3ng@uh3ng-VirtualBox:~/uh3ng$ ls -l
总用量 4
-rw-rw-r-- 1 uh3ng uh3ng 13 6月 19 11:52 f2
lrwxrwxrwx 1 uh3ng uh3ng 2 6月 19 11:51 f3 -> f1
uh3ng@uh3ng-VirtualBox:~/uh3ng$ cat f2
I am f1 file
uh3ng@uh3ng-VirtualBox:~/uh3ng$ cat f3
cat: f3: 没有那个文件或目录
文件权限
Linux的文件有严格的权限控制,通过ls -l
命令查看的文件权限表示如下:
习惯上,把每三位作为一个单元,用八进制表示文件对每个群组的权限,例如rwx记作111即八进制的7,r-x记作101即八进制5。所以上图的权限代码为755.
更改文件权限
以下介绍chgrp chown chmod三个命令,它们分别对应着更改文件属组,文件属主和文件权限。
1、chgrp
语法和示例:
chgrp [-R] 属组名 文件名 #-R表示递归更改文件目录下的文件
chgrp testGrp file
2、chown
语法和示例:
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3、chmod
语法和示例:
chmod [-R] xyz file
chmod 777 file #使所有用户都有file的读写执行权限
chmod a+x file #使所有用户都有file的执行权限
chmod u-r file #使属主不具备file的读权限
chmod g+x file #使属组拥有对file的执行权限
chmod o+w file #使其他用户拥有对file的写权限