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=1rwx 对应二进制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
2
3
4
5
6
7
8
将文件123的所有者改为root
chown root 123
将文件123的所属组改为root
chgrp root 123
将文件123的所有者和所属组都改为root
chown root:root 123
将文件夹Pictures和其子文件夹和子文件的所有者和所属组均为改root
chown -R root:root Pictures

查看文件内容

使用cat 命令

-n 显示行号
-A 包含特殊字符,比如回车

使用tac 命令,显示文件内容,但是和cat 相反,先显示最后一行,再显示倒数第二行

使用 more 命令 当文件内容很多,一页显示不全时使用,可以按空格向后翻页,回车 显示下一行, Ctrl+D 向上, Ctrl+F 向下

使用 less 命令 作用和more 类似,但是功能多一些,可以使用方向键上下翻动,可以输入查找,通过Nn 向前和向后查找

使用 head 命令 显示文件前10行

-n 选项,显示前n行, head -n 4 11.txt

使用 tail 命令 显示文件后10行

-n 选项,显示后n行,
-f 选项,动态显示文件后10行,可以试试观察文件,常用于实时产看日志 或者直接使用命令 tailf