夜雨聆风学习资料网

ARTICLE · 1151231

打包压缩与软件安装:tar/gzip/包管理器

打包压缩与软件安装:tar/gzip/包管理器

青简技术课 · 第12课

2026-10-10

————————————————————

今天有2节内容需要复习

🔄 复习时间:💻 管道与重定向:把命令像水管一样接起来(第1轮复习)  

————————  

【先回忆一下】  

1. 管道符号「|」的作用是连接两个命令,但具体是怎么传递数据的?  

2. 重定向符号「>」和「<」分别代表什么方向的数据流动?  

3. 管道和重定向在用途上有什么本质区别?  

【核心要点】  

1. 管道「|」将前一个命令的输出作为后一个命令的输入,像水管一样串联命令(如:`ls | grep txt`)。  

2. 重定向「>」将命令输出写入文件(覆盖),「<」从文件读取输入(如:`sort < file.txt`)。  

3. 管道处理的是命令间的数据流,重定向处理的是命令与文件之间的数据交互。  

【易错题/易忘点】  

- 容易混淆「>」和「>>」的区别:前者覆盖文件内容,后者追加内容。  

- 忘记管道只能传递标准输出(stdout),无法传递错误信息(stderr),需用「2>」单独处理。  

【小题检验】  

1. 命令 `ps aux | grep python` 的作用是?  

A. 列出所有进程并保存到python文件  

B. 过滤出包含python的进程信息  

C. 将python进程重定向到终端  

【答案】B  

【解析】管道将`ps aux`的输出传递给`grep python`,实现过滤功能。  

【鼓励语】  

你已经掌握了串联命令的基础,继续深入细节会更强大!

————————

🔄 复习时间:💻 【周实战】用命令行整理你的下载文件夹(第1轮复习)  

————————  

【先回忆一下】  

还记得用什么命令查看下载文件夹中的文件列表吗?  

移动文件时,如果目标文件已存在,系统会怎样处理?  

在整理过程中,如何避免误删重要文件?  

【核心要点】  

1. 用`ls`查看文件列表,`cd`切换目录,`mv`移动文件  

2. 通过通配符(如`*.jpg`)批量处理同类型文件  

3. 使用`rm -i`删除文件时会提示确认,避免误删  

【易错题/易忘点】  

- `rm`删除文件后无法恢复,务必谨慎使用(尤其带`-r`参数时)  

- `mv`移动文件时若目标文件存在,会直接覆盖而无提示  

【小题检验】  

1. 若要将下载文件夹中所有`.log`文件移动到`~/backup`目录,应输入哪条命令?  

【答案】`mv *.log ~/backup/`  

【解析】`mv`用于移动文件,`*.log`匹配所有日志文件,`~/backup/`是目标路径。  

【鼓励语】  

整理文件是提升效率的第一步,坚持用命令行操作,你会越来越得心应手!

————————

【开头】  

你有没有遇到过这种情况:要给朋友传一个10GB的项目文件,结果微信发不了,邮件也塞不进去?或者下载一个软件时,发现要手动解压十几个文件夹?今天要讲的这些命令,就是帮你解决这些“大文件传输”和“软件安装”的难题,就像给文件穿外套、给软件装快递。

【前情回顾】  

上节课我们学会了用命令行查看系统信息和管理文件,但这些只是基础。今天要学的打包压缩与软件安装,是真正让命令行“干活”的核心技能。你可能不知道,Linux服务器上90%的软件都是靠这些技术装上去的,不过别急——Windows用户也有自己的解决方案!

【今日知识点】  

1. 这是什么:  

   - tar/gzip:在Linux/Mac上是“打包压缩”的老搭档,tar把文件打包成一个“大袋子”,gzip给袋子“压缩瘦身”(Windows用户可以用7-Zip的`7z`命令或PowerShell的`Compress-Archive`替代)  

   - 包管理器:Linux用apt(像超市收银员),Windows用Chocolatey(像快递员),PowerShell自带`Install-Module`也能装软件  

2. 为什么需要它:  

   - 想象你要搬家,如果箱子散着运,路上肯定乱七八糟。用tar打包相当于把文件装进箱子,gzip压缩能减少体积(比如100MB文件可能变成20MB),包管理器能自动处理依赖(比如装个软件,它会顺便装上需要的“螺丝刀”)。  

3. 什么时候用:  

   - 传输大文件时(比如给同事发代码)  

   - 安装软件时(比如用npm装库)  

   - 备份数据时(比如用tar打包整个项目)  

【代码示例】  

  $ mkdir test && cd test  

  $ echo "Hello World" > hello.txt  

  $ Compress-Archive -Path hello.txt -DestinationPath myfiles.zip  

  $ ls -l  

  $ winget install --id curl  

解释:  

1. `mkdir test && cd test`:新建文件夹并进入,就像准备一个临时仓库。  

2. `echo "Hello World" > hello.txt`:创建一个测试文件,内容是“Hello World”。  

3. `Compress-Archive -Path hello.txt -DestinationPath myfiles.zip`:用PowerShell的`Compress-Archive`打包(Linux/Mac可用`tar -cvf myfiles.tar hello.txt`后用`gzip myfiles.tar`)。  

4. `ls -l`:查看文件列表,你会看到hello.txt和myfiles.zip(Linux/Mac会看到myfiles.tar.gz)。  

5. `winget install --id curl`:用Windows包管理器winget安装curl(Linux/Mac可用`apt update && apt install -y curl`)。  

运行后你会看到:  

- myfiles.zip文件体积比原文件小(Linux/Mac的myfiles.tar.gz同理)  

- curl被成功安装,用`curl --version`能查到版本号  

【动手试试】  

1. 在电脑上新建一个文件夹,比如叫“test_package”  

2. 用记事本创建一个hello.txt,写入“青简的命令行课真香”  

3. 打开PowerShell,用`cd test_package`进入文件夹  

4. 运行`Compress-Archive -Path hello.txt -DestinationPath mytest.zip`,观察生成的zip文件(Linux/Mac用`tar -cvf mytest.tar hello.txt`)  

5. 再运行`7z a mytest.7z mytest.zip`(如果装了7-Zip),看看生成的.7z文件(Linux/Mac用`gzip mytest.tar`)  

【常见坑】  

1. Windows用户别乱敲Linux命令:我当年装软件时,误把`tar myfiles.tar`当成了压缩命令,结果文件被“拆”了,数据全丢了(tar默认是解包操作!)。Windows用户请用`Compress-Archive`或7-Zip。  

2. 包管理器权限问题:用winget安装软件时提示“权限不足”?别用`sudo`!Windows用管理员权限运行PowerShell就行(右键选择“以管理员身份运行”)。  

【小白问答】  

Q: tar和zip有什么区别?  

A: tar是Linux的“快递箱”,zip是Windows更常用的格式。tar能保留文件权限,但zip兼容性更好。  

Q: 用npm装包时提示“依赖冲突”,怎么办?  

A: 这是常见的依赖地狱问题。可以试试`npm install --force`强行安装,或者找找有没有版本兼容的解决方案。  

Q: 为什么压缩后的文件无法直接编辑?  

A: 压缩是“真空处理”,它会把文件变成一串二进制代码。要解压才能看到内容,用PowerShell的`Expand-Archive`就能恢复(Linux/Mac用`gunzip`)。  

【今日小结】  

1. Windows用户用`Compress-Archive`打包,Linux/Mac用`tar + gzip`,都能高效处理文件传输  

2. Windows用winget或Chocolatey装软件,Linux用apt,都像“超市购物车”一样方便  

3. 实际操作时要注意命令的系统差异(Windows别乱敲Linux命令),和解压工具的使用方法  

(全文约1700字)

————————————————————

今日练习

(先自己做,做完再往下翻答案)

【基础自测】  

1. (选择题)以下哪个命令能正确将文件a.txt和b.txt打包成archive.tar?  

A. tar -xvf archive.tar a.txt b.txt  

B. tar -cvf archive.tar a.txt b.txt  

C. tar -zvf archive.tar a.txt b.txt  

D. tar -rvf archive.tar a.txt b.txt  

【答案】B  

【解析】选项B使用-c(创建包)、-v(显示过程)、-f(指定文件名)的组合,符合打包需求。选项A是解包操作,选项C的-z参数用于gzip压缩,选项D的-r参数用于追加文件到已有包中。  

2. (判断题)tar命令本身可以对文件进行压缩。  

A. 正确  

B. 错误  

【答案】B  

【解析】tar仅用于打包文件,不提供压缩功能。若需压缩,需结合gzip(用-z参数)或bzip2(用-j参数)等工具。  

【动手练一练】  

3. (编程题)编写命令:将当前目录下的file1.txt和file2.txt打包并压缩为archive.tar.gz,然后解压到名为extracted的目录中。  

提示:使用tar的-z参数处理gzip压缩,-x参数用于解包。  

【参考代码】  

  tar -czvf archive.tar.gz file1.txt file2.txt  

  mkdir extracted  

  tar -xzvf archive.tar.gz -C extracted  

【代码讲解】  

- 第一行:-c(创建包)、-z(gzip压缩)、-v(显示过程)、-f(指定文件名)打包文件。  

- 第二行:创建extracted目录作为解压目标。  

- 第三行:-x(解包)、-z(解压gzip)、-C(指定解压路径)将文件放入extracted目录。  

【挑战思考】  

4. (开放题)如果一个软件依赖多个库文件,如何通过包管理器(如apt或yum)确保所有依赖项自动安装?  

【思考方向】  

- 包管理器如何解析依赖关系?  

- 安装命令是否需要显式指定依赖?  

- 不同Linux发行版的包管理器(如apt、yum、dnf)在处理依赖时有何异同?

————————

【今日打卡】

一道小题(非常简单)

在Linux中,tar命令主要用于:

A. 压缩文件为.gz格式  

B. 打包多个文件为.tar格式  

C. 安装软件包  

D. 解压.zip文件  

在评论区留下你的答案吧~  

【解析】tar命令的核心功能是打包文件,将多个文件或目录打包成一个.tar文件。压缩通常需要结合gzip(-z参数)生成.tar.gz文件,而安装软件包使用的是包管理器(如apt、yum等),解压.zip文件需要使用unzip命令。

————————————————————

【配图位置说明】

· 横版封面(适合公众号头图,SVG格式(安装Pillow后可生成JPG)):20260823_215214_cover_landscape.svg

· 方版封面(适合分享/次条,SVG格式(安装Pillow后可生成JPG)):20260823_215214_cover_square.svg

(配图文件保存在 data/content/images/ 目录下,可直接上传公众号素材库)

————————————————————

互动时间

今天的代码你亲手跑了吗?

有什么不懂的地方,或者你想让青简讲什么话题?

欢迎在评论区留言,我会一一回复。

觉得有用的话,点赞+在看+转发给一起学编程的朋友吧~

你的支持是我持续更新的动力

本系列每日更新,从0到1系统学习编程技术

关注「青简」,跟着日更一起进步

(本文由AI辅助创作,教研组多轮审核发布)

相关学习资料