目录
1、打包压缩和解压解包
打包压缩常用命令:tar、gzip、zip、unzip
简介:
- 打包压缩是日常工作中备份文件的一种方式
- 在不同的操作系统中,常用的打包压缩方式不同:
- Linux 常用 tar.gz
- Windows 常用 rar
- Mac 常用 zip
1.1、打包与解包之tar命令
- 作用:tar 是Linux中常用的备份工具,使用它可将一系列文件打包到一个文件中,也可以将打包的文件恢复成打包之前的一系列文件。
- tar 命令格式如下:
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径
# 解包文件
tar -xvf 打包文件.tar
- tar 常用选项参数说明:
-c:生成档案文件,创建打包文件
-v:列出归档解档的详细过程,显示进度
-f:指定档案文件名称,f后面一定是.tar文件,所以必须放在所有参数最后
-t:列出档案中包含的文件
-x:解开档案文件
注意:
- 参数f选项必须放在最后,其他选项的顺序可任意放置
- 不要在目标文件夹内部,执行打包压缩文件操作,应返回上一级目录再执行该操作;否则会操作失败。
1.2、压缩与解压之gzip命令
- 作用:可完成包的压缩与解压;tar 常与 gzip命令结合使用实现文件的打包、压缩。
- tar 只负责打包文件,并不进行压缩操作
- gzip 负责将tar打包后的文件,进行压缩,压缩文件的扩展名一般用 .tar.gz
- gzip命令格式如下:
gzip [-options] 被压缩文件 (如:gzip -r xxx.tar)
- gizp常用参数选项说明:
-r:压缩目标文件目录及其所有子目录,即进行递归处理
-d:指定文件解压缩
1.3、tar与gzip命令合并使用
说明:先打包再进行压缩需要执行两次命令过程较为繁琐,现将tar与gzip合并使用,只需要执行一次命令即可完成打包压缩与解压解包操作。
- 实现:只需在tar命令中增加一个-z参数选项,即可调用gzip实现一个压缩功能,完成一个先打包后压缩的过程;解压解包过程同样如此。
- 命令格式如下:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩文件/路径
# 解压文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxcf 打包文件.tar.gz -C 目标路径
1.4、zip与unzip命令
首先执行安装命令:
# 安装zip命令
yum -y install zip
# 安装unzip命令
yum -y install unzip
- 说明:通过zip压缩目标文件生成的压缩文件不需要指定扩展名,默认扩展名为zip。
- 命令格式如下
# 压缩文件
zip -r 压缩生成文件名 被压缩文件
# 解压缩文件
unzip -d 解压后的目录 被解压文件.tar
- 参数选项说明:
-r:递归处理,将指定目录下的所有文件和子目录一并处理
-d:指定解压后的目录
注意:
- 如果zip 处理的目标文件是文件夹,需使用参数 -r 递归处理文件夹内部所有文件
- 使用unzip解压文件时,如果没有指定解压的目录,默认在当前目录下进行解压操作;如果出现重名文件,会给出提示进行相应的操作,如下所示:
2、软件链接与硬链接
2.1、原理
首先要想真正理解软链接与硬链接,必须要知道inode 与 block这两个概念。了解Linux系统是如何通过文件名获取文件信息。
对于一个文件,从宏观上可分为文件名和文件内容(文件数据)两个部分,在Linux中被分为:用户数据(user data) 和 元数据(metadata) 两部分。
- 用户数据(block):即文件数据块(data block),真实存放文件内容(文件数据的地址),而文件名就存放在其中;文件名记录在上级目录的 block 中。也就是说,目录的 block 中记录的是这个目录下所有一级子文件和子目录的文件名及 inode 的对应(根目录的 inode 是系统已知的,inode 号是 2)。
- 元数据(inode):存放文件的附加信息,如:文件大小、创建时间、所属用户/用户组、文件的数据真正保存的 block 编号等信息,所以系统或程序是通过inod号查找到文件真正存储的地址(文件块); inode 号即索引节点号,文件的唯一标识。
# 查看文件的inode信息
ls -i 目标文件
系统/程序通过文件名获取文件内容的过程,如图示:
软链接与硬链接的作用:
- 为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。
2.2、硬链接
定义:硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息(data block)。
- ln命令格式:
ln [-options] 源文件 目标文件
- 参数选项说明:
-s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件
-f:强制链接。如果目标文件已经存在,则删除目标文件后再建立链接文件
硬链接的特点:
- 不管是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
- 不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在(即文件链接数大于1包括自身),这个文件都可以被访问。
- 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
- 硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的。
- 硬链接不能链接目录,这是Linux文件系统设计决定的,因为硬链接目录操作过于复杂,且会造成硬链接环等问题。
硬链接的实际应用:
- 根据硬链接的特点,限制多,不能跨文件系统,也不能链接目录,所以实际应用较少;如想多个文件实时数据共享可以使用硬链接。
2.3、软链接
定义:软链接类似于 Windows 的快捷方式,它的特点和快捷方式一样,存储的是源文件的绝对路径地址。软链接会建立自己的 inode 索引和 block,所以软链接和源文件的 inode 号是不一致的,而且在软链接的 block 中,写的不是真正的数据,而仅仅是源文件的文件名及 inode 号。
注意:软链接的源文件必须写绝对路径,否则建立的软链接文件就会报错,无法正常使用。
软链接特点:
- 不管是修改源文件,还是修改软链接文件,另一个文件中的数据都会发生改变。
- 删除软链接文件,源文件不受影响。而删除源文件,软链接文件将找不到实际的数据,从而显示文件不存在。
- 软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及 inode 号。
- 软链接可以链接目录、跨分区。
软链接的实际应用:
类似于Windows的快捷方式,可用来改变命令的执行,如:在Linux中默认安装的是Python2,执行的路径是/usr/bin/python;此时若是安装了Python3,并且想控制台默认输入python时进入的是Python3,那么可将Python3的执行命令路径,通过软链接命令将/usr/bin/python链接到Python3执行路径;如:
- 查找python位置
which python
- 删除软链接
rm /usr/bin/python
- 查看环境变量
echo $PATH
- 生成python3的软链接到环境变量
ln -s /usr/bin/python3.9 /usr/bin/python
3、vi命令行文本编译器
3.1、vi简介
- vi是一个文本编辑器,只能编辑文本内容,不能对字体、段落进行排版
- 可完成输出、新增、删除、查找、替换、复制粘贴等操作
- 不支持鼠标操作,只能进行命令操作
3.2、vi三种工作模式
- 命令模式
- 文本输入模式
- 末行模式
交互示意图:
操作示列:
- vi ./a.txt :表示为编辑a.txt文件 vi打开查看(默认非编辑模式)文本文件
- 按 i 进入编辑模式,此时可以移动光标进行文本文件编辑操作
- 按 esc 退出编辑模式
- 输入 :wq 保存文件并退出
- 输入 /abc 回车: 搜索当前文件中包含abc的内容。
非编辑模式下,可以使用快捷键进行操作:
按ctrl+f :向前翻一页
按ctrl+b :向后翻一页
按ctrl+d :向前翻半页
按ctrl+u :向后翻半页
按$ :移动光标到行尾
按^ :移动光标到行首位置
yy :复制光标当前行到缓冲区
p :粘贴复制的内容
dd :删除光标当前行
输入/abc回车 搜索文件中包含abc的内容
输入:wq 保存文件并退出