欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

「Linux 操作系统」文件、目录与磁盘格式

程序员文章站 2022-05-09 23:47:58
...

文件权限

Linux 一般将文件可读写的身份分为三个类型:拥有者(owner)、所属群组(group)和其他人(others),且三种身份各有读写执行权限。在 Windows 下可执行文件有扩展名来判断,如 .exe、.bat、。com 等,而 Linux 下的客户自行文件由文件权限判断。

ls 命令用于查看文件,执行 ls -al 就能看到文件的权限以及拥有者和所属用户组等信息:

「Linux 操作系统」文件、目录与磁盘格式

umask 命令用于查看文件默认权限

「Linux 操作系统」文件、目录与磁盘格式

修改文件权限

文件的权限可以用 chmod 修改,但权限的设置方法有两种,分别可以使用数字或符号来进行权限修改。此外,可以使用命令 chown 修改文件拥有者,使用命令 chgrp 修改文件所属用户组。

  1. 数字类型修改文件权限

Linux 文件的基本权限有 9 个,分别为 owner、group 和 others 三种身份各自的读写执行权限。各权限的数字对照表:

r: 4
w: 2
x: 1

例如权限 [-rwxrwx---] 的数字为:

owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0

所以该文件的权限数字为 770,修改文件权限的命令 chmod 语法:chmod [-R] xyz 文件或目录

test 文件的权限更改为 [-rwxr-xr-x],使用命令 chmod 755 test

「Linux 操作系统」文件、目录与磁盘格式

  1. 符号类型修改文件权限

使用 u、g、o、a 分别代表 user、group、others 以及全部身份。

「Linux 操作系统」文件、目录与磁盘格式

文件类型与扩展名

使用 ls -l 命令第一栏中的文件权限第一个字符为文件的类型,Linux 下的文件类型有:

  • 常规文件:包括纯文本文件、二进制文件和数据文件,其中数据文件如 Linux 用户登录时将登录数据记录在 /varlog/wtmp 文件中,该文件是数据文件,可以通过 last 命令读出来,如果使用 cat 会出现乱码。文件属性中用 [-] 表示。
  • 目录文件:第一个属性为 [d],如 drwxrwxrwx
  • 链接文件:类似于 Windows 系统下的快捷方式,第一属性为 [l]
  • 设备与设备文件:通常集中在 /dev 目录下,分为区块设备文件(存储数据如硬盘等,第一属性为 [b])和字符设备文件(串行端口的接口设备如鼠标等,第一属性为 [c]
  • 套接字文件(sockets):数据接口文件,用于网络通信的数据交换,第一属性为 [s]
  • 管道文件(FIFO, pipe):数据传输文件,用于进程间通信的一种方式。

文件目录

文件目录配置

Linux 采用目录树(directory tree)结构,最上层是根目录,其他所有目录都是从根目录出发而生成的。

「Linux 操作系统」文件、目录与磁盘格式

  • 目录树起始点为根目录(/,root);
  • 每一目录不止使用本地分区的文件系统,也可使用网络的文件系统,如使用 NFS 服务器挂在某特定目录;
  • 每一文件在目录树中文件名(包括完整路径)都是独一无二的。

Centos 根目录下的文件:

「Linux 操作系统」文件、目录与磁盘格式

  • /bin 系统存放执行文件的目录,如 catchmoddatemvmkdir 等常用的命令
  • /boot 主要放置系统内核引导文件
  • /dev Linux 下任何设备都是以文件形式存放在这个目录中,通过读写这些文件就相当于读写某个设备
  • /etc 存放系统的配置文件,如账号密码文件、服务的启动文件等
  • /lib 放置启动时会用到的库函数文件
  • /mnt 临时挂载点
  • /srv 网络服务所需的数据目录
  • /tmp 临时文件,所有用户均可访问
  • /usr 系统运行过程中不常改变的文件
  • /var 系统运行过程中经常改变的文件

注意:Centos 7.x 版本将 /sbin/bin/lib 移动到 /usr 下面。

目录相关操作

两种路径表示方法:

  • 绝对路径:从根目录开始写起
  • 相对路径:从当前目录开始,如返回上一层目录 cd ../

几个常用的处理目录的命令:

  • cd:切换目录
  • pwd:显示当前目录的绝对路径
  • mkdir:建立一个新目录
  • rmdir:删除一个空目录
  1. cd

格式cd [目录路径]
目录路径可以是相对路径,也可以是绝对路径。其中 ... 分别代表此层目录和上层目录,~ 表示家目录,/ 表示根目录。

  1. mkdir

格式mkdir [选项] 目录名称
选项

  • -m :设置文件权限,如 mkdir -m 740 firname
  • -p:递归创建文件,如 mkdir -p firname1/firname2
  1. rmdir

格式rmdir [-p] 目录名称
删除目录或如果删除后上层目录为空,也删除上层目录

执行文件路径的变量:$PATH

设置环境变量 PATH 可以让命令在其他路径也能执行。可以添加 /root 目录到变量中,使用自己在该目录编写的 who3 命令。

# echo $PATH
{PATH}:/root:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# PATH="{PATH}=:/root:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
# who3
root     pts/0    Jun  1 20:12 (***.***.***.***)

文件相关操作

  • ls:查看文件与目录
  • cp、rm、mv:复制、删除和移动
  • cat、tac、nl:直接查看文件内容
  • more、less:分页查看文件内容
  • head、tail:数据截取文件内容
  • od:查看非纯文本文件内容
  • touch:修改文件时间或创建新文件
  1. ls

格式ls [ 选项 ] [ 目录或文件 ]
功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。
常用选项

-a:列出目录下的所有文件,包括以 . 开头的隐含文件。 每个目录中都有一个 . 和 … 两个文件
-d:将目录像文件一样显示,而不是显示其他文件。
-i:输出文件的i节点的索引信息。
-k:以k字节的形式表示文件的大小。
-l:列出文件的详细信息。
-n:用数字的UID,GID代替名称。
-F: 在每个文件名后面附上一个字符以说明该文件的类型,“ * ” 表示可执行的普通文件;“/” 表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。

  1. rm

格式rm [选项] 文件列表
功能:rm命令删除文件或目录
常用选项

  • -f –force 忽略不存在的文件,并且不给出提示信息。
  • -r -R,–recursive 递归地删除指定目录及其下属的各级子目录和相应的文件。
  • -i 交互式删除文件。
  1. head、tail

格式head [-n number] 文件rail [-n number] 文件
功能:从头开始显示 number 行或从尾开始显示 number 行,默认为 10 行。

如果要显示文件 /root/test 的第 11 到第 20 行?
可以使用管道(|),即前面的命令所输出的信息,通过管道交由后续命令继续使用。
head -n 20 /root/test | tail -n 10 即先取前 20 行内容,然后在此基础上取后 10 行内容

文件查找

  1. 脚本文件查找

which:查找执行文件
格式which [-a] command
根据 PATH 目录中查找命令的位置,参数 -a 表示将所有找到的位置都列出来,而不止第一个找的的命令名称。

  1. whereis

格式whereis [-bmsu] 文件或目录名

相比 find 命令在直接在硬盘中查找,whereis 命令只需要在特定的目录中查找,因此速度比 find 快。

  1. locate

格式locate [-ir] keyword

locate 寻找的数据是由已建立的数据库 /var/lib/mlocate 里面的数据查找的,用 updatedb 可以根据 /etc/updatedb.conf 的设置取查找系统硬盘内的文件,并跟新数据库文件。

  1. find

格式find [PATH] [option] [action]

Linux 文件系统

文件系统对一个存储设备上的数据和源数据进行组织的机制。Linux 可以在许多种存储设备上支持许多种文件系统,最原始的磁盘文件系统使用的是 ext2。

Linux 文件系统接口实现为分层的体系结构,从而将用户接口层、文件系统实现和操作存储设备的驱动程序分隔开。

文件系统特性

Windows2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统为 ext2。Linux 文件系统通常将文件内容与文件属性分别存放在不同的区块,权限(rwx)和属性(拥有者、用户组、时间参数等)放置在 inode 中,实际文件数据放置到数据区块中

  • 超级区块:超级块结构表示一个文件系统,即一个文件系统只有一个超级区块。包含管理文件所需的信息,包括文件系统名称(如ext2)、文件系统大小和状态、块设备的引用和元数据信息(如空闲列表等)。
  • inode:表示文件系统中的一个对象,具有唯一标识符,一个文件占用一个 inode。用于记录文件的属性,同时记录文件数据所在区块号码。
  • 数据区块:实际记录文件的内容,如果文件太大,会占用多个区块。每个区块最多只能放置一个文件的数据,如果文件过大会占用多个区块数量。
「Linux 操作系统」文件、目录与磁盘格式

文件系统一开始就将 inode 和数据区块规划好。ext2 文件系统基本区分为多个区块群组,每个区块群组有独立的 inode、数据区块、超级区块系统。最前端有一个启动扇区,用于安装启动引导文件。

挂载点

每个文件系统有独立的 inode、区块、超级区块等信息,这个文件系统要能够链接到目录树才能被我们使用,挂载就是将文件系统与目录树结合的操作。

  • 挂载:将一个文件系统的顶层目录链接到另一个文件系统的子目录上,使他们成为一个整体。
  • 挂载点:一定是一个目录,该目录为进入该文件系统的入口。

作为挂载点的目录,理论上应该是空目录才行,如果非空,那么挂载了文件系统后,原目录下的东西就会暂时隐藏,等新分区被卸载后才能显示。

挂载文件系统使用命令 mount,格式为 mount [-参数] [设备] [挂载点]

鸟哥推荐使用下面的方式进行挂载:

mount [-t 文件系统] UUID='' 挂载点

VFS

Linux 通过 Virtual Filesystem Switch 的内核功能去读取文件系统,即整个 Linux 识别的文件系统都是 VFS 进行管理。

硬链接与符号连接

  • 硬链接:在某个目录下增加一条文件名链接到某 inode 号码的关联记录,目录不可以使用硬链接,硬链接不能跨文件系统。使用 ln 命令可以建立硬链接。
  • 符号链接:类似 Windows 下的快捷方式,符号链接就是建立一个独立的文件,而这个文件让数据的读取指向它链接的文件的文件名。使用 ln -s命令建立文件的符号链接。

注意:如果对源文件删除,会导致符号链接不可用,而硬链接其他文件不会受影响,因此硬链接是安全的。

「Linux 操作系统」文件、目录与磁盘格式

相关标签: 操作系统