Linux文件系统
Linux目录结构
在Linux系统中,任何东西都可以简化为文件,比如
- 分区 对应到
/dev/sda1
- 硬件部件 对应刻
/dev/cdrom
/
是所有路径的开始,是所有目录的根
ls /
显示Linux根目录下的文件

Linux 整个目录是树状结构,如下图

/ 根目录
/boot 存放的启动Linux时需要使用的内核文件,包括链接文件以及镜像文件
/etc 所有的系统管理需要的配置文件和子目录列表
/lib 系统开机所需要的动态连接共享库
/bin 用户指令集合
/sbin 超管命令存放,存放系统管理员的系统管理程序
/run 运行目录,是一个临时文件系统,存储系统启动以来的信息,当系统重启时,这个目录下的人家应该被删除,如果系统上有/var/run
目录,应该让他指向/run
/lost+found 一般情况是空的,系统非法关机后,存放一些文件
/tmp 临时目录
/root 系统管理员的用户主目录
/home 用户的家目录,以用户的账号命名
/usr 用户的很多应用程序和文件都放在这个目录
/usr/src 内核源码默认的放置目录
/var 存放经常修改的数据,比如日志文件(/var/log
),邮件等
/opt 给主机安装软件放的目录,安装软件
/media 系统会识别一些硬件设备然后挂载到这个目录下
/dev 管理设备,存放的是Linux的外部设备,在Linux中访问设备和访问文件的方法是相同的
/mnt 让用户临时挂载别的文件系统,可以把外部存储挂载在/mnt/上,然后进入该目录就可以产看外部存储设备里的内容了
/selinux 安全子系统
/proc 管理内存空间,虚拟的目录,是系统内存的映射,可以直接访问这个目录来获取系统信息,这个目录不在硬盘上,而是在内存里,也可以直接对里面的一些文件进行修改
/srv
/sys 这三个与Linux内核相关
目录操作
创建和删除
创建目录: mkdir
创建文件: touch
查看文件内容: cat
删除目录或文件: rm
删除非空目录: rm -rf file目录
删除日志: rm log(等价: $find ./ -name“log”-exec rm { ;)
移动(剪切) : mv 原文件 目标文件
复制文件: cp 原文件 目标文件
复制目录: cp -r 原目录 目标目录
目录切换
**找到文件/目录位置:**cd
切换到上一个工作目录: cd -
工换到父目录: cd ..
切换到home目录: cd 或 cd ~
切换到/root目录: cd /root
显示当前路径: pwd
更改当前工作路径为path: $cd path
绝对目录:从Linux的根目录开始
相对路径:路径不是从Linux的根目录开始,而是相对于当前pwd
的目录
目录操作
ls:显示当前目录下的文件,常用选项:
-a 列出所有文件,包含隐藏文件
-l 以列表形式显示
-1(数字1) 以分行显示
-t 按时间排序
-r 排倒序
-R 包含目录的子目录及文件
按时间排序,以列表的方式显示目录 ls -lt
如果ls -lt
使用非常频繁,我们可以给他设置一下别名,在.bashrc
中设置命令别名:alias lsl=’ls -Irt’
文件类型
使用ls -l
列出文件详细内容后第一个字母
- — 一杠代表普通文件(文本文件,二进制文件,压缩文件
- d 一个字母d代表文件夹(蓝色显示)
- b 设备文件(块设备) 存储设备硬盘,U盘/dev/sda
- c 设备文件(字符设备) 打印机,终端/dev/tty1
- l 链接文件(淡蓝色)
- s 套接字文件
- p 管道文件
ln命令 创建链接文件ln -s 文件A 文件B
文件权限管理
查看权限
使用 ls -l
命令可以看到文件权限
在Linux中,针对每个文件的权限分配9个位来表示,定义了文件的所有者,文件所属组和其他用户对文件的操作权限,包含读,写,执行
三个维度

在九位权限中:
前三位代表文件所有者权限,图中红色
中间三位代表文件所属组的权限,图中黄色
后三位代表其他人权限,图中蓝色
其中rwx
分别代表,读取权限、写入权限、执行权限而-
则表示,不具有相应的权限,因为文件和目录是不同的所以其rwx的含义也不同,如下图

更改权限
在更改过程中,每种权限都被分配了一个数字,r=4 w=2 x=1,rwx
对应二进制1 1 1
,十进制4 2 1
, 即rwx=7
更改文件权限为rwxrwxrwx使用命令chmod 777 file
更改文件权限为rwxrw-rw-使用命令chmod 766 file
使用以下命令,可以更改递归更改整个目录的权限,包含子目录和子文件
1 | chmod -R 777 /test/myapp |
除了使用数字,还用可以用字母来表示权限,可以分别使用+(加号)和-(减号)来打开或关闭权限
在使用字母时 u
代表用户(9位权限中的前三位) g
代表组(中间三位) o
代表其他人(最后的三位) a
代表全部权限即777,r、w、x则分别表示自己的含义
如更改权限为r-xr-xr-x可以写成
chmod a-w file
,即所有权限减去w
如将当前文件所属用户的写权限去掉,可以写成chmod u-w file
,注意是基于当前权限修改
使用字母修改权限时,仅更改明显指出的权限,没有列出的权限不会更改
默认权限
当普通用户创建一个文件时,其默认权限是rw-rw-r–
当普通用户创建一个目录时,其默认权限是rwxrwxr-X
当root用户创建文件时,其默认权限是rw-r–r–
当root用户创建目录时,其默认权限是rwxr-xr-x
上面提到这些默认权限是由umask(反掩码)
决定的
反掩码 umask 显示的值表示了当前用户新建目录和文件的权限
- 新建目录的权限是 所有权限减去反掩码 即 新建目录权限 = 777 - umask
- 新建文件的权限同理 即 新建文件权限 = 777 - umask
如果我们想要修改新建目录的默认权限,我们可以修改umask值后再进行创建文件

注意,上面这样的操作只是临时更改了这个shell窗口中的umask值,如果我们要永久的修改,需要编辑 $HOME/.bash.rc
在文件的最后加入 umask 311
文件所有权
作为普通用户是无法更改文件或者目录的所有权的,只有root用户可以更改所有权,下图红色表示所有者,黄色表示文件所属组

修改文件所有权,可以使用root用户执行下面的命令
1 | 将文件123的所有者改为root |
查看文件内容
使用cat
命令
-n
显示行号-A
包含特殊字符,比如回车
使用tac
命令,显示文件内容,但是和cat
相反,先显示最后一行,再显示倒数第二行
使用 more
命令 当文件内容很多,一页显示不全时使用,可以按空格
向后翻页,回车
显示下一行, Ctrl+D
向上, Ctrl+F
向下
使用 less
命令 作用和more
类似,但是功能多一些,可以使用方向键上下翻动,可以输入查找,通过N
和 n
向前和向后查找
使用 head
命令 显示文件前10行
-n
选项,显示前n行,head -n 4 11.txt
使用 tail
命令 显示文件后10行
-n
选项,显示后n行,-f
选项,动态显示文件后10行,可以试试观察文件,常用于实时产看日志 或者直接使用命令tailf