Linux操作系统(八)——文件管理

一、linux文件系统介绍
ubuntu的根目录如下:

1、/bin和/sbin目录
bin 是 Binary 的缩写,存放着可执行文件或可执行文件的链接(类似快捷方式),你可以看到 ls, cat, mkdir 等常用命令都在这里,/bin目录中的文件都是可执行的二进制文件,而不是文本文件。

与 /bin 类似的是 /sbin 目录,System Binary 的缩写,这里存放的命令可以对系统配置进行操作。普通用户可能可以使用这里的命令查看某些系统状态,但是如果想更改配置,就需要 sudo 授权或者切换成超级用户。可以看到一些熟悉的命令,比如 ifconfig,iptables。普通用户可以使用 ifconfig 查看网卡状态,但是想配置网卡信息,就需要授权了。
2、/boot 目录
这里是系统启动需要的文件,你可以看到 grub 文件夹,它是常见的开机引导程序。我们不应该乱动这里的文件。

3、/dev 目录
dev 是 device 的缩写,这里存放这所有的设备文件。在 Linux 中,所有东西都是以文件的形式存在的,包括硬件设备。dev 是 device 的缩写,这里存放这所有的设备文件。在 Linux 中,所有东西都是以文件的形式存在的,包括硬件设备。

4、/etc 目录
这个目录经常使用,存放很多程序的配置信息。"etc"是Linux系统中的一个目录,它是英文单词"etcetera"的缩写。这个目录包含了许多系统配置文件和其他重要的文件。

5、/lib 目录
lib 是 Library 的缩写,类似于 Windows 系统中存放 dll 文件的库,包含 bin 和 sbin 中可执行文件的依赖。也可能出现 lib32 或 lib64 这样的目录,和 lib 差不多,只是操作系统位数不同而已。

6、/media 目录
这里会有一个以你用户名命名的文件夹,里面是自动挂载的设备,比如 U 盘,移动硬盘,网络设备等。比如说我在电脑上插入一个 U 盘,系统会把 U 盘自动给我挂载到 /media/linux 这个文件夹里(我的用户名是 linux),如果我要访问 U盘的内容,就可以在那里找到。

7、/mnt 目录
这也是和设备挂载相关的一个文件夹,一般是空文件夹。media 文件夹是系统自动挂载设备的地方,这里是你手动挂载设备的地方。比如说,刚才我们在 dev 中看到了一大堆设备,你想打开某些设备看看里面的内容,就可以通过命令把设备挂载到 mnt 目录进行操作。不过一般来说,现在的操作系统已经很聪明了,像挂载设备的操作几乎都不用你手动做,都被自动挂载到 media 目录了。

8、/opt 目录
opt 是 Option 的缩写,这个文件夹的使用比较随意,一般来说我们自己在浏览器上下载的软件,安装在这里比较好。当然,包管理工具下载的软件也可能被存放在这里。比如我在这里存放了 搜狗输入法等等软件的文件夹。

9、/proc 目录
proc 是 process 的缩写,这里存放的是全部正在运行程序的状态信息。

你会发现 /proc 里面有一大堆数字命名的文件夹,这个数字其实是 Process ID(PID),文件夹里又有很多文件。前面说过,Linux 中一切都以文件形式储存,类似 /dev,这里的文件也不是真正的文件,而是程序和内核交流的一些信息。比如说我们可以查看当前操作系统的版本

或者查看 CPU 的状态:


如果你需要调试应用程序,proc 目录中的信息也许会帮上忙。
10、/root 目录
这是 root 用户的家目录,普通用户需要授权才能访问。

11、/run 和 /sys 目录
用来存储某些程序的运行时信息和系统需要的一些信息。

需要注意的是,这两个位置的数据都存储在内存中,所以一旦重启,/run 和 /sys 目录的信息就会丢失,所以不要试图在这里存放任何文件。
12、/srv 目录
srv 是 service 的缩写,主要用来存放服务数据。对于桌面版 Linux 系统,这个文件夹一般是空的,但是对于 Linux 服务器,Web 服务或者 FTP 文件服务的资源可以存放在这里。

13、/tmp 目录
tmp 是 temporary 的缩写,存储一些程序的临时文件。临时文件可能起到很重要的作用。比如经常听说某同学的 Word 文档崩溃了,好不容易写的东西全没了,Linux 的很多文本编辑器都会在/tmp 放一份当前文本的 copy 作为临时文件,如果你的编辑器意外崩溃,还有机会在 /tmp 找一找临时文件抢救一下。当然,tmp 文件夹在系统重启之后会自动被清空,如果没有被清空,说明系统删除某些文件失败,也许需要你手动删除一下

14、/usr 目录
usr 是 Universal System Resource 的缩写,这里存放的是一些非系统必须的资源,比如用户安装的应用程序。)。/usr 和 /usr/local 目录中又含有 bin 和 sbin 目录,也是存放可执行文件(命令),但和根目录的 bin 和 sbin 不同的是,这里大都是用户使用的工具,而非系统必须使用的。值得一提的是,如果使用 Linux 桌面版,有时候在桌面找不到应用程序的快捷方式,就需要在 /usr/share/applications 中手动配置桌面。

15、/var 目录
var 是 variable 的缩写,这个名字是历史遗留的,现在该目录最主要的作用是存储日志(log)信息,比如说程序崩溃,防火墙检测到异常等等信息都会记录在这里。日志文件不会自动删除,也就是说随着系统使用时间的增长,你的 var 目录占用的磁盘空间会越来越大,也许需要适时清理一下。

16、/home 目录
home 目录,这是普通用户的家目录。在桌面版的 Linux 系统中,用户的家目录会有下载、视频、音乐、桌面等文件夹,这些没啥可说的,我们说一些隐藏的比较重要的文件夹(Linux 中名称以 . 开头就是隐藏文件)。这是我的家目录的部分文件:


其中 .cache 文件夹存储应用缓存数据,.config 文件夹存储了一部分应用程序的配置,比如说我的 Chrome 浏览器配置就是那里面。但是还有一部分应用程序并不把配置储存在 .config 文件夹,而是自己创建一个隐藏文件夹,存放自己的配置文件等等信息,比如你可以看到.sougouinput的配置文件就不在 .config 中。最后说 .local 文件夹,有点像 /usr/local,里面也有 bin 文件夹,也是存放可执行文件的。比如说我的 python pip 以及 pip 安装的一些工具,都存放在 ~/.local/bin 目录中。但是,存在这里的文件,只有该用户才能使用。这就是为什么,有时候普通用户可以使用的命令,用 sudo 或者超级用户却被告知找不到该命令。因为有的命令是特定用户家目录里的,被添加到了该用户的 PATH 环境变量里,他可以直接用。你超级用户想用当然可以,但是得写全绝对路径才行。
17、cdrom 目录
光盘驱动器的目录 , 一般为空

18、snap 目录
Snaps是跨发行版、无依赖关系且易于安装的应用程序,这些应用程序与所有依赖项打包在一起,可以在所有主要的 Linux 发行版上运行。从单个构建开始,一个 snap(应用程序)将在桌面、云和 IoT 上的所有受支持的 Linux 发行版上运行。支持的发行版包括Ubuntu、Debian、Fedora、Arch Linux、Manjaro 和 CentOS/RHEL。存放snap软件的目录

19、swapfile 文件
交换文件允许 Linux 将磁盘空间模拟为内存。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。传统上,交换空间是磁盘上的一个独立分区。安装 Linux 时,只需创建一个单独的分区进行交换。但是这种趋势在最近几年发生了变化。使用交换文件,你不再需要单独的分区。你会根目录下创建一个文件,并告诉你的系统将其用作交换空间就行了。使用专用的交换分区,在许多情况下,调整交换空间的大小是一个可怕而不可能的任务。但是有了交换文件,你可以随意调整它们的大小。最新版本的 Ubuntu 和其他一些 Linux 发行版已经开始 默认使用交换文件。甚至如果你没有创建交换分区,Ubuntu 也会自己创建一个2GB 左右的交换文件。

二、文件类型(bcd-lsp)
linux把文件类型分为7种 , 简写为 "BCD-LSP"


1、普通文件 (-)
- 像文本文件、二进制文件,我们编写的源代码文件这些都是普通的文件。
- 文本文件:譬如常见的.c、.h、.sh、.txt 等这些都是文本文件,文本文件的好处就是方便人阅读、浏览以及编写

- 二进制文件:linux 系统下的可执行文件、C 代码编译之后得到的.o 文件、.bin文件等都是二进制文件

2、目录文件(d)
目录文件就是文件夹,在linux下面文件夹也是一种文件(特殊的文件)。可以使用vim打开显示。在Linux系统下,会有一些专门的系统调用用于读写文件夹。

3、字符设备文件(c)
4、块设备文件(b)
- 关于设备的驱动开发,对字符设备文件(character)、块设备文件(block)这些文件类型应该都是熟悉的 。
- Linux 系统下,一切皆文件,也包括各种硬件设备。设备文件(字符设备文件、块设备文件)对应的是硬件设备,在Linux 系统中,硬件设备会对应到一个设备文件,应用程序通过对设备文件的读写来操控、使用硬件设备。
- 虽然有设备文件,但是设备文件并不对应磁盘上的一个文件,也就是说设备文件并不存在于磁盘中,而是由文件系统虚拟出来的。一般是由内存来维护,当系统关机时,设备文件都会消失。
- 字符设备文件一般存放在 Linux系统/dev/目录下,所以/dev也称为虚拟文件系统 devfs。

5、符号链接文件(l)
符号链接文件(link)类似于 Windows系统中的快捷方式文件,是一种特殊文件,它的内容指向的是另一个文件路径,当对符号链接文件进行操作时,系统根据情况会对这个操作转移到它指向的文件上去,而不是对它本身进行操作。符号链接分为两种。软连接和硬链接

- 软连接可以理解为window的快捷方式 , 它和window的快捷方式的作用是一样的 。
- 硬链接是用两个文件名指向同一块磁盘空间 , 两个文件名有相同的inode号



- 软连接:很简单类比一下windows的快捷方式。
- 硬链接: 硬链接文件和源文件inode节点号相同,并且一个inode节点可以对应多个文件名。
6、管道文件(p)
主要用于进程间通信,管道分为无名管道和有名管道两种管道,管道文件是建立在内存之上可以同时被两个进程访问的文件
7、套接字文件(s)
套接字文件(socket)也是一种进程间通信的方式,与管道文件不同的是,它们可以在不同主机上的进程间通信,实际上就是网络通信。
三、文件权限与归属
1、文件的权限
在Linux系统中,每个文件都有归属的所有者和所属组,并且规定了文件的所有者、所属组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。但是,对于目录文件来说,理解其权限设置就不那么容易了。很多资深Linux用户其实也没有真正搞明白。对于目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。可读、可写、可执行权限对应的命令在文件和目录上是有区别的


文件权限表


文件权限的数字表示法基于字符(rwx)的权限计算而来,其目的是简化权限的表示方式。例如,若某个文件的权限为7,则代表可读、可写、可执行(4+2+1);若权限为6,则代表可读、可写(4+2)。我们来看一个例子。现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;其他人只有可读的权限。那么,这个文件的权限就是rwxrw-r--,数字法表示即为764。这里以rw-r-x-w-权限为例来介绍如何将字符表示的权限转换为数字表示的权限。首先,要将各个位上的字符替换为数字,如图所示。

减号是占位符,代表这里没有权限,在数字表示法中用0表示。也就是说,rw-转换后是420,r-x转换后是401,-w-转换后是020。然后,将这3组数字之间的每组数字进行相加,得出652,这便是转换后的数字表示权限。
2、chmod 修改文件的权限
修改文件的权限位

第一种表达:数字表示法



第2种表示方法: 字符表示法,语法:chmod [who] [+ | - | =] [mode] 文件名,命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
添加某个权限。
取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。


3、chown 修改文件的所有者
所有的文件皆有其拥有者(Owner)。利用 chown命令 可以将文件的拥有者加以改变。一般来说,这个命令只能由系统管理者(root)使用,一般用户没有权限来改变别人的文件的拥有者,也没有权限可以将自己的文件的拥有者改设为别人。只有系统管理者(root)才有这样的权限。


四、文件操作
1、cp 命令
cp命令来自于英文单词copy的缩写,用于将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记加则会直接报错。-f参数则用于当目标文件已存在时会直接覆盖不再询问,这两个参数尤为常用。
语法格式:cp [参数] 源文件 目标文件




2、mv 命令
mv命令来自于英文单词move的缩写,其功能与英文含义相同,用于对文件进行剪切和重命名。这是一个高频使用的文件管理命令,我们需要留意它与复制命令的区别。cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增加。在同一个目录内对文件进行剪切的操作,实际应理解成重命名操作。
语法格式:mv [参数] 源文件 目标文件



五、归档与压缩
用户在进行数据备份时,需要把若干文件整合为一个文件以便保存。尽管整合为一个文件进行管理,但文件大小仍然没变。若需要网络传输文件时,就希望将其压缩成较小的文件,以节省在网络传输的时间。因此本节介绍文件的归档与压缩。
1、文件压缩和归档
首先需要明确两个概念:
- 归档文件是将一组文件或目录保存在一个文件中。
- 压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。
因此,归档文件仍是没有经过压缩的,它所使用的磁盘空间仍等于其所有文件的总和。因而,用户可以将归档文件再进行压缩,使其容量更小。
gzip是Linux中最流行的压缩工具,具有很好的移植性,可在很多不同架构的系统中使用。bzip2在性能上优于gzip,提供了最大限度的压缩比率。如果用户需要经常在Linux和微软Windows间交换文件,建议使用zip。常用的压缩方式有 : zip , rar , tgz , tbz , txz , 7z
2、zip 压缩与解压
zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会附含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。
语法格式:zip 参数 文件


将指定目录及其内全部文件都打包成zip格式压缩包文件:

3、tar 压缩与解压
tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。把要传输的文件先进行压缩再进行传输,能够很好的提高工作效率,方便分享。



4、7z 压缩与解压
7z命令来自于英文词组“7-zip”的缩写,其功能是用于文件解压缩工作。7-zip应该是Linux系统中常用的解压缩工具了,7z是一种压缩格式,具备较高的压缩比率,对文本文件尤其有效。
语法格式:7z [参数] 文件






六、文件比较与补丁
1、diff 比较文件
diff命令来自于英文单词different的缩写,其功能是用于比较文件内容差异。如果有多个内容相近的文件,如何快速定位到不同内容所在位置?此时用diff命令就再合适不过了!
语法格式:diff [参数] 文件1 文件2



2、diff 生成补丁
diff 除了可以比较文件外, 也可以用于生成补丁文件

3、patch 打补丁
patch命令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如
语法格式:patch [参数]

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)