「Linux 操作系统」文件、目录与磁盘格式
文件权限
Linux 一般将文件可读写的身份分为三个类型:拥有者(owner)、所属群组(group)和其他人(others),且三种身份各有读写执行权限。在 Windows 下可执行文件有扩展名来判断,如 .exe、.bat、。com
等,而 Linux 下的客户自行文件由文件权限判断。
ls
命令用于查看文件,执行 ls -al
就能看到文件的权限以及拥有者和所属用户组等信息:
umask
命令用于查看文件默认权限
修改文件权限
文件的权限可以用 chmod
修改,但权限的设置方法有两种,分别可以使用数字或符号来进行权限修改。此外,可以使用命令 chown
修改文件拥有者,使用命令 chgrp
修改文件所属用户组。
- 数字类型修改文件权限
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
:
- 符号类型修改文件权限
使用 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
系统存放执行文件的目录,如cat
、chmod
、date
、mv
、mkdir
等常用的命令 -
/boot
主要放置系统内核引导文件 -
/dev
Linux 下任何设备都是以文件形式存放在这个目录中,通过读写这些文件就相当于读写某个设备 -
/etc
存放系统的配置文件,如账号密码文件、服务的启动文件等 -
/lib
放置启动时会用到的库函数文件 -
/mnt
临时挂载点 -
/srv
网络服务所需的数据目录 -
/tmp
临时文件,所有用户均可访问 -
/usr
系统运行过程中不常改变的文件 -
/var
系统运行过程中经常改变的文件
注意:Centos 7.x 版本将 /sbin
、/bin
、/lib
移动到 /usr
下面。
目录相关操作
两种路径表示方法:
- 绝对路径:从根目录开始写起
- 相对路径:从当前目录开始,如返回上一层目录
cd ../
几个常用的处理目录的命令:
- cd:切换目录
- pwd:显示当前目录的绝对路径
- mkdir:建立一个新目录
- rmdir:删除一个空目录
- cd
格式:cd [目录路径]
目录路径可以是相对路径,也可以是绝对路径。其中 .
和 ..
分别代表此层目录和上层目录,~
表示家目录,/
表示根目录。
- mkdir
格式:mkdir [选项] 目录名称
选项:
-
-m
:设置文件权限,如mkdir -m 740 firname
-
-p
:递归创建文件,如mkdir -p firname1/firname2
- 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:修改文件时间或创建新文件
- ls
格式:ls [ 选项 ] [ 目录或文件 ]
功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。
常用选项:
-a:列出目录下的所有文件,包括以 . 开头的隐含文件。 每个目录中都有一个 . 和 … 两个文件
-d:将目录像文件一样显示,而不是显示其他文件。
-i:输出文件的i节点的索引信息。
-k:以k字节的形式表示文件的大小。
-l:列出文件的详细信息。
-n:用数字的UID,GID代替名称。
-F: 在每个文件名后面附上一个字符以说明该文件的类型,“ * ” 表示可执行的普通文件;“/” 表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。
- rm
格式:rm [选项] 文件列表
功能:rm命令删除文件或目录
常用选项:
- -f –force 忽略不存在的文件,并且不给出提示信息。
- -r -R,–recursive 递归地删除指定目录及其下属的各级子目录和相应的文件。
- -i 交互式删除文件。
- 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 行内容
文件查找
- 脚本文件查找
which:查找执行文件
格式:which [-a] command
根据 PATH 目录中查找命令的位置,参数 -a
表示将所有找到的位置都列出来,而不止第一个找的的命令名称。
- whereis
格式:whereis [-bmsu] 文件或目录名
相比 find 命令在直接在硬盘中查找,whereis 命令只需要在特定的目录中查找,因此速度比 find 快。
- locate
格式:locate [-ir] keyword
locate 寻找的数据是由已建立的数据库 /var/lib/mlocate
里面的数据查找的,用 updatedb
可以根据 /etc/updatedb.conf
的设置取查找系统硬盘内的文件,并跟新数据库文件。
- find
格式:find [PATH] [option] [action]
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
命令建立文件的符号链接。
注意:如果对源文件删除,会导致符号链接不可用,而硬链接其他文件不会受影响,因此硬链接是安全的。
上一篇: java中各种路径写法总结
推荐阅读
-
linux中cp 命令使用介绍(复制文件或者目录)
-
linux rm 命令(删除文件和目录) 使用详解
-
linux命令大全之scp命令详解(复制文件和目录)
-
Linux chmod命令详解和使用实例(改变文件或目录的访问权限)
-
Linux chgrp命令详细介绍和使用实例(改变文件或目录的所属用户组)
-
Linux chown命令详细介绍和使用实例(改变文件或目录的所有者)
-
linux修改目录和文件权限的简单命令解释
-
linux搜索文件内容并替换(查找与替换命令大全)
-
Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)
-
linux搜索文件内容并替换(查找与替换命令大全)