Reviewed-on: study-area-cn/study-area-cn#19
This commit is contained in:
parent
9429325196
commit
4c6b3b8687
|
@ -38,7 +38,7 @@
|
||||||
- [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md)
|
- [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md)
|
||||||
- [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md)
|
- [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md)
|
||||||
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md)
|
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md)
|
||||||
- [gzip与xz]()
|
- [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md)
|
||||||
- [备份]()
|
- [备份]()
|
||||||
- [Shell与Shell Script]()
|
- [Shell与Shell Script]()
|
||||||
- [学习Shell]()
|
- [学习Shell]()
|
||||||
|
|
|
@ -33,10 +33,10 @@
|
||||||
- `/tmp` 存放一些临时文件,通常被挂载到了内存
|
- `/tmp` 存放一些临时文件,通常被挂载到了内存
|
||||||
- `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。
|
- `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。
|
||||||
- `/var` 可变动的文件(variable)
|
- `/var` 可变动的文件(variable)
|
||||||
- `/var/mail` (本地邮件信箱)
|
- `/var/mail` (本地邮件信箱)
|
||||||
- `/var/spool/news` (新闻组)
|
- `/var/spool/news` (新闻组)
|
||||||
- `/var/run` (程序相关文件)
|
- `/var/run` (程序相关文件)
|
||||||
- `/var/lock` (程序锁相關)
|
- `/var/lock` (程序锁相關)
|
||||||
- `/sys` 也是一个重要的设备目录
|
- `/sys` 也是一个重要的设备目录
|
||||||
- `/home` 用户目录,相当于 `C:\Users`(MacOS:`/Users`)
|
- `/home` 用户目录,相当于 `C:\Users`(MacOS:`/Users`)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
# GZip 与 XZ
|
||||||
|
|
||||||
|
上篇文章中,我们介绍了 `tar` 命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 `tar` 命令可以调用 `gzip` 和 `xz` 进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 `gzip` 或 `xz` 命令本身吧。
|
||||||
|
|
||||||
|
> 这两个命令只能压缩单个文件,而不能压缩目录。
|
||||||
|
|
||||||
|
## GZip
|
||||||
|
|
||||||
|
> gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。gzip是一种在Linux系统中常见的命令行压缩工具。它使用DEFLATE压缩算法来减小文件的大小,使文件更易于存储和传输。
|
||||||
|
>
|
||||||
|
> 事实上,在许多软件中,包括在你浏览互联网的过程中,gzip已经被广泛使用。说不定,你现在正在阅读的网页就是gzip压缩过的。
|
||||||
|
|
||||||
|
使用 `gzip` 命令压缩的文件的后缀和前面提到的 `.tar.gz` 一样,都是 `.gz` 结尾的压缩文件。
|
||||||
|
|
||||||
|
下面是 `gzip` 命令的一些常用选项:
|
||||||
|
|
||||||
|
- `-c`:将压缩后的数据输出到终端(但是你看不懂的乱码),而不是覆盖原始文件。通常配合后面会讲到的 `>` 与 `|` 使用。
|
||||||
|
- `-r`:递归压缩目录,包括子目录中的文件。注意:这里的递归是对每一个文件单独压缩,而不是对整个目录压缩成一个文件。
|
||||||
|
- `-v`:显示压缩或解压缩的详细信息。
|
||||||
|
- `-d`:解压缩文件。`gunzip` 命令等同于 `gzip -d`。
|
||||||
|
- `-f`:强制压缩或解压缩,会覆盖原有的文件。
|
||||||
|
- `-k`:不删除原始文件。
|
||||||
|
- `-1` 到 `-9`:表示压缩等级,`-1` 表示最低压缩等级,速度快,`-9` 表示最高压缩等级,压缩率高。默认是 `-6`。
|
||||||
|
|
||||||
|
> `gzip` 命令默认会删除原始文件,所以使用 `-f` 选项可以强制保留原始文件。
|
||||||
|
|
||||||
|
例如,我们可以使用以下命令来压缩一个文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gzip file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
这将会生成一个名为 `file.txt.gz` 的压缩文件,原始的 `file.txt` 文件将被删除。
|
||||||
|
|
||||||
|
要解压缩一个 `gzip` 压缩的文件,可以使用下面的命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gzip -d file.txt.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
> 之前学习的 `tar` 命令的 `-z` 选项就等价于先用 tar 命令打包,再执行一遍 gzip 命令。
|
||||||
|
|
||||||
|
## XZ
|
||||||
|
|
||||||
|
> xz是一种压缩文件格式,采用LZMA SDK压缩,目标文件较gzip压缩文件(.gz或)小30%,较.bz2小15%。
|
||||||
|
>
|
||||||
|
> 前段时间 XZ 命令被爆出存在后门,差一点就进入了正式的发行版,这次漏洞如果成功会危害到数以万计的 Linux 设备,但成功被开源社区的人发现 ~~(还是因为SSH程序启动慢了0.5秒)~~ ,这也侧面体现出了XZ应用的广泛与 Linux 社区支持的安全性。
|
||||||
|
|
||||||
|
使用 `xz` 命令压缩的文件的后缀和前面提到的 `.tar.xz` 一样,都是 `.xz` 结尾的压缩文件。
|
||||||
|
|
||||||
|
`xz` 的基本选项和 `gzip` 基本一致,但是提供了以下几个提高性能的额外选项:
|
||||||
|
|
||||||
|
- `-T <线程数>` 可以使用多线程进行压缩,提高压缩速度。
|
||||||
|
- `-e` 可以使用更多的时间来提高压缩率
|
||||||
|
|
||||||
|
例如,我们可以使用以下命令来压缩一个文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xz file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
这将会生成一个名为 `file.txt.xz` 的压缩文件,原始的 `file.txt` 文件将被删除。
|
||||||
|
|
||||||
|
要解压缩一个 `xz` 压缩的文件,可以使用下面的命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xz -d file.txt.xz
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> study-area-cn
|
|
@ -63,7 +63,7 @@ vboxadd:x:979:1::/var/run/vboxadd:/bin/false
|
||||||
你可能会发现,有的用户的登录Shell是`/bin/nologin`或`/bin/false`,这代表这些用户不能登录。
|
你可能会发现,有的用户的登录Shell是`/bin/nologin`或`/bin/false`,这代表这些用户不能登录。
|
||||||
|
|
||||||
> 你可以在终端里面执行`nologin`,会发现他会提示“该用户无法登录”,而`false`只是简单地返回一个错误返回值。
|
> 你可以在终端里面执行`nologin`,会发现他会提示“该用户无法登录”,而`false`只是简单地返回一个错误返回值。
|
||||||
|
>
|
||||||
> 有关Shell的知识我们在后面会系统介绍,简单来说,Shell就是一个让用户交互来执行操作的程序。
|
> 有关Shell的知识我们在后面会系统介绍,简单来说,Shell就是一个让用户交互来执行操作的程序。
|
||||||
|
|
||||||
### root用户
|
### root用户
|
||||||
|
@ -226,7 +226,7 @@ drwx------ 3 hmtsai wheel 4096 7月26日 18:33 foo1
|
||||||
|
|
||||||
比如,让`foo1`文件夹同用户组可以读写进入,其他人只可读取进入怎么样?
|
比如,让`foo1`文件夹同用户组可以读写进入,其他人只可读取进入怎么样?
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
chmod g+rwx,o+rx foo1
|
chmod g+rwx,o+rx foo1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -249,16 +249,16 @@ drwxrwxr-x 3 hmtsai wheel 4096 7月26日 18:33 foo1
|
||||||
八进制模式主要用于快速修改模式。比如,我想让一个文件的模式变成rwxrwxrwx,只需要`chmod 777 file`,而不是`chmod ugo+rwx file`。
|
八进制模式主要用于快速修改模式。比如,我想让一个文件的模式变成rwxrwxrwx,只需要`chmod 777 file`,而不是`chmod ugo+rwx file`。
|
||||||
|
|
||||||
> 为什么是4,2,1这三个数字呢?这是因为他们的组合能够不重,不信你试试看。
|
> 为什么是4,2,1这三个数字呢?这是因为他们的组合能够不重,不信你试试看。
|
||||||
|
>
|
||||||
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。这个主要在懒得看模式的时候用(划掉)。因为比较简单,所以这里不再赘述。
|
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。~~这个主要在懒得看模式的时候用(划掉)~~。因为比较简单,所以这里不再赘述。
|
||||||
|
|
||||||
#### 参数
|
#### 参数
|
||||||
|
|
||||||
`chmod`的参数与`chown`比较类似,于是在此不再赘述,详情可以通过`chmod --help`了解。
|
`chmod`的参数与`chown`比较类似,于是在此不再赘述,详情可以通过`chmod --help`了解。
|
||||||
|
|
||||||
> 几乎所有命令都有一个`--help`参数,可以通过这个参数大概了解这个命令的用法。
|
> 几乎所有命令都有一个`--help`参数,可以通过这个参数大概了解这个命令的用法。
|
||||||
|
|
||||||
|
## 课后任务
|
||||||
# 课后任务
|
|
||||||
|
|
||||||
由于这篇的内容比较复杂,于是我们建议您完成以下任务进行练习:
|
由于这篇的内容比较复杂,于是我们建议您完成以下任务进行练习:
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,7 @@ tar -zxvf archive.tar.gz -C ./archive
|
||||||
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
|
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
|
||||||
|
|
||||||
### 添加文件
|
### 添加文件
|
||||||
|
|
||||||
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
|
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
|
||||||
|
|
||||||
例如上文的
|
例如上文的
|
||||||
|
@ -160,7 +161,7 @@ tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||||
|
|
||||||
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
|
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
|
||||||
|
|
||||||
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
|
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
|
||||||
|
|
||||||
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。
|
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
其实,Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。
|
其实,Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。
|
||||||
|
|
||||||
> 注意,以下操作,若无特殊说明,输入命令均在终端(Terminal)下操作,可以按下 C-M-T 呼出。
|
> 注意,以下操作,若无特殊说明,输入命令均在终端(Terminal)下操作,可以按下 C-M-T 呼出。
|
||||||
|
---
|
||||||
> 本文中,快捷键使用以下格式表示:
|
> 本文中,快捷键使用以下格式表示:
|
||||||
> `Ctrl`键使用`^`或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。
|
> `Ctrl`键使用`^`或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。
|
||||||
> 它们的排列顺序是这样的:`C-M-S-<Other Key>`
|
> 它们的排列顺序是这样的:`C-M-S-<Other Key>`
|
||||||
|
@ -132,7 +132,6 @@ rm -r <你想删除的文件夹>
|
||||||
|
|
||||||
> 如果你真的想尝试,那么请一定在虚拟机下!搞坏系统作者可不负责!
|
> 如果你真的想尝试,那么请一定在虚拟机下!搞坏系统作者可不负责!
|
||||||
|
|
||||||
|
|
||||||
### `nano`简单的文档编辑器
|
### `nano`简单的文档编辑器
|
||||||
|
|
||||||
![Nano 的界面](./assets/2.5.1.png)
|
![Nano 的界面](./assets/2.5.1.png)
|
||||||
|
|
Reference in New Issue