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

文件权限

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

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


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


修改文件权限

文件的权限可以用 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


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

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


文件类型与扩展名

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

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

文件目录

文件目录配置

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


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

Centos 根目录下的文件:


  • /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]

选项与参数:

  • -type:按文件类型搜索
  • -name:按文件名搜索
  • -maxdepth:指定搜索深度
  • -size number1+ -size number2-:搜索大于 number1 小于 number2 大小的文件
  • -exec:将 find 搜索的结果集执行某一指定命令,如 find /usr -name "*tmp*" -exec ls -l {} \;
  • -xargs:同上,使用管道,当结果集数量过大时可以分片映射,如 find /usr -name "*tmp*" -print0 | xargs ls -l

注意 find 命令的路径必须放在选项和参数的前面。

Linux 文件系统

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

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

文件系统特性

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

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

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

挂载点

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

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

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

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

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

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

VFS

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

硬链接与符号连接

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值