概括
首先,Linux中一切皆文件,切Linux中有五种文件类型,分别是:
- 普通文件,比如
1.txt
和2.py
等 - 目录,
/home
等 - 字符设备文件,是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等。
- 块设备文件,是i/o设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据,例如硬盘,U盘,SD卡等
- 符号链接文件,比如硬链接和软链接文件。
基本的文件操作
ls
命令可以查看命令,tree
树状显示文件夹等。chmod
用于更改权限,chown
用于更改文件所有者,chgrp
用于更改文件所属的组。
文件查找命令find
在这里专门说一下:
find pathname -options [-pritn -exec -ok ...]
常用的几个有:
-name
按照文件名查找iname
不区分大小的正则文件名ilname
区分大小的正则文件名-depth
先查找当前目录中的文件,再查找子目录中的文件。
比较文件的差异,适合于比较两个排序的文件的差别,第一个命令是:
comm file1 file2
一行行的比较,并把结果显示出来。
更强大的diff
命令,不需要排序,直接可以显示区别:
diff file1 file2
逐行比较1 2文件的差异,具体查看man手册,这个更常用。
还有个gui差别显示命令,vimdiff
,具体参考手册即可。
文件系统
通常认为,文件系统是磁盘分区,Unix/Linux中的基本文件存储单元都是文件分区,即把一个或多个硬盘进行逻辑划分,操作系统把每个逻辑分区视为独立的磁盘。
而把磁盘的存储方式按照一定的规则统一起来,这种规则决定了文件的映射方式等,这个规则称为文件管理系统或者磁盘分区格式。一般使用fdisk
查看磁盘的分区,这个命令一般需要sudo
权限。
在这里,要搞清楚关于分区的概念,分别是主分区、扩展分区和逻辑分区。它们之间的区别具体参考自这篇博客。
一般来说,一个硬盘最多有4个主分区,如果我们需要把一个硬盘划分成<=4个的分区,那么全部是主分区即可。但是如果多余4个,那么需要扩展分区和逻辑分区。一个扩展分区看成一个容器,这个容器内部可以有多个逻辑分区,每个逻辑分区可以看成内部的一个分区使用。不同的分区是被文件系统进行隔绝的。
应该熟悉Linux目录树结构下常用的目录作用,来自这篇文章:
/ 根目录
├── bin 存放用户二进制文件
├── boot 存放内核引导配置文件
├── dev 存放设备文件
├── etc 存放系统配置文件
├── home 用户主目录
├── lib 动态共享库
├── lost+found 文件系统恢复时的恢复文件
├── media 可卸载存储介质挂载点
├── mnt 文件系统临时挂载点
├── opt 附加的应用程序包
├── proc 系统内存的映射目录,提供内核与进程信息
├── root root 用户主目录
├── sbin 存放系统二进制文件
├── srv 存放服务相关数据
├── sys sys 虚拟文件系统挂载点
├── tmp 存放临时文件
├── usr 存放用户应用程序
└── var 存放邮件、系统日志等变化文件
最后还有关于硬链接和软链接,推荐阅读这篇文章:
https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/