# 其他命令
## 目標
- 查找文件
- `find`
- 軟鏈接
- `ln`
- 打包和壓縮
- `tar`
- 軟件安裝
- `apt-get`
## 01. 查找文件
- `find` 命令功能非常強大,通常用來在 **特定的目錄下** **搜索** 符合條件的文件
| 序號 | 命令 | 作用 |
| :--- | :----------------------- | :---------------------------------------------- |
| 01 | find [路徑] -name "*.py" | 查找指定路徑下擴展名是 `.py` 的文件,包括子目錄 |
- 如果省略路徑,表示在當前文件夾下查找
- 之前學習的通配符,在使用 `find` 命令時同時可用
- 有關 `find` 的高級使用,在就業班會講
### 演練目標
- \1. 搜索桌面目錄下,文件名包含 `1` 的文件
```bash
find -name "*1*"
```
- \2. 搜索桌面目錄下,所有以 `.txt` 為擴展名的文件
```bash
find -name "*.txt"
```
- \3. 搜索桌面目錄下,以數字 `1` 開頭的文件
```bash
find -name "1*"
```
## 02. 軟鏈接
| 序號 | 命令 | 作用 |
| :--- | :---------------------------- | :----------------------------------------------------------- |
| 01 | ln -s 被鏈接的源文件 鏈接文件 | 建立文件的軟鏈接,用通俗的方式講**類似于** Windows 下的**快捷方式** |
注意:
- 沒有`-s` 選項建立的是一個硬鏈接文件,兩個文件占用相同大小的硬盤空間,**工作中幾乎不會建立文件的硬鏈接**
- **源文件要使用絕對路徑**,不能使用相對路徑,這樣可以方便移動鏈接文件后,仍然能夠正常使用
### 演練目標
1. 將桌面目錄下的 `01.py` **移動**到 `demo/b/c` 目錄下
2. 在桌面目錄下新建`01.py` 的軟鏈接`FirstPython` 分別使用 **相對路徑** 和 **絕對路徑** 建立 `FirstPython` 的軟鏈接
3. 將 `FirstPython` **移動**到 `demo` 目錄下,對比使用 **相對路徑** 和 **絕對路徑** 的區別
### 硬鏈接簡介(知道)
- 在使用 `ln` 創建鏈接時,如果沒有 `-s` 選項,會創建一個 **硬鏈接**,而不是軟鏈接
#### 硬鏈接演練
1. 在 `~/Desktop/demo` 目錄下建立 `~/Desktop/demo/b/c/01.py` 的硬鏈接 `01_hard`
2. 使用 `ls -l` 查看文件的**硬鏈接數**(硬鏈接——有多少種方式可以訪問文件或者目錄)
3. 刪除 `~/Desktop/demo/b/c/01.py`,并且使用 `tree` 來確認 `demo` 目錄下的三個鏈接文件
#### 文件軟硬鏈接的示意圖

> 在 Linux 中,**文件名** 和 **文件的數據** 是分開存儲的
- 提示:
- 在 Linux 中,只有文件的 `硬鏈接數 == 0` 才會被刪除
- 使用 `ls -l` 可以查看一個文件的硬鏈接的數量
- 在日常工作中,幾乎不會建立文件的硬鏈接,知道即可
## 03. 打包壓縮
- **打包壓縮** 是日常工作中備份文件的一種方式
- 在不同操作系統中,常用的打包壓縮方式是不同的
- `Windows` 常用 `rar`
- `Mac` 常用 `zip`
- `Linux` 常用 `tar.gz`
### 3.1 打包 / 解包
- `tar` 是 Linux 中最常用的 **備份**工具,此命令可以 **把一系列文件** 打包到 **一個大文件中**,也可以把一個 **打包的大文件恢復成一系列文件**
- `tar` 的命令格式如下:
```bash
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路徑...
# 解包文件
tar -xvf 打包文件.tar
```
- `tar` 選項說明
| 選項 | 含義 |
| :--- | :----------------------------------------------------------- |
| c | 生成檔案文件,創建打包文件 |
| x | 解開檔案文件 |
| v | 列出歸檔解檔的詳細過程,顯示進度 |
| f | 指定檔案文件名稱,f 后面一定是 .tar 文件,所以必須放選項最后 |
> 注意:`f` 選項必須放在最后,其他選項順序可以隨意
#### 打包解包演練
1. 刪除桌面下的所有內容
2. 在桌面下新建三個空白文件 `01.py`、`02.py`、`03.py`
3. 將這三個文件打一個 `py.tar` 的包
4. 新建 `tar` 目錄,并且將 `py.tar` 移動到 `tar` 目錄下
5. 解包 `py.tar`
### 3.2 壓縮/解壓縮
#### 1) `gzip`
- `tar` 與`gzip` 命令結合可以使用實現文件打包和壓縮
- `tar` 只負責打包文件,但不壓縮
- 用 `gzip` 壓縮 `tar` 打包后的文件,其擴展名一般用 `xxx.tar.gz`
> 在 `Linux` 中,最常見的壓縮文件格式就是 `xxx.tar.gz`
- 在 `tar` 命令中有一個選項 **-z** 可以調用 `gzip`,從而可以方便的實現壓縮和解壓縮的功能
- 命令格式如下:
```bash
# 壓縮文件
tar -zcvf 打包文件.tar.gz 被壓縮的文件/路徑...
# 解壓縮文件
tar -zxvf 打包文件.tar.gz
# 解壓縮到指定路徑
tar -zxvf 打包文件.tar.gz -C 目標路徑
```
| 選項 | 含義 |
| :--- | :--------------------------------------------- |
| -C | 解壓縮到指定目錄,注意:要解壓縮的目錄必須存在 |
#### 2) `bzip2(two)`
- `tar` 與 `bzip2` 命令結合可以使用實現文件 **打包和壓縮**(用法和 `gzip` 一樣)
- `tar` 只負責打包文件,但不壓縮,
- 用 `bzip2` 壓縮 `tar` 打包后的文件,其擴展名一般用 `xxx.tar.bz2`
- 在 `tar` 命令中有一個選項 **-j** 可以調用 `bzip2`,從而可以方便的實現壓縮和解壓縮的功能
- 命令格式如下:
```bash
# 壓縮文件
tar -jcvf 打包文件.tar.bz2 被壓縮的文件/路徑...
# 解壓縮文件
tar -jxvf 打包文件.tar.bz2
```
## 04. 軟件安裝
## 4.1 通過 apt 安裝/卸載軟件
- apt 是 `Advanced Packaging Tool`,是 Linux 下的一款安裝包管理工具
- 可以在終端中方便的 **安裝**/**卸載**/**更新軟件包**
```bash
# 1. 安裝軟件
$ sudo apt install 軟件包
# 2. 卸載軟件
$ sudo apt remove 軟件名
# 3. 更新已安裝的包
$ sudo apt upgrade
```
### 安裝演練
```bash
# 一個小火車提示
$ sudo apt install sl
# 一個比較漂亮的查看當前進程排名的軟件
$ sudo apt install htop
```
## 4.2 配置軟件源
- 如果希望在 `ubuntu` 中安裝軟件,**更加快速**,可以通過設置**鏡像源**,選擇一個訪問網速更快的服務器,來提供軟件下載/安裝服務
- 提示:更換服務器之后,需要一個相對比較長時間的更新過程,需要耐心等待。更新完成后,再安裝軟件都會從新設置的服務器下載軟件了
> 所謂鏡像源,就是**所有服務器的內容是相同的(鏡像)**,但是根據所在位置不同,國內服務器通常速度會更快一些!


- linux基礎
- 01_Python基礎課程安排
- 02_操作系統(科普章節)
- 03_操作系統的發展史(科普章節)
- 04_文件和目錄(理解)
- 05_Ubuntu圖形界面入門
- 06_常用Linux命令的基本使用
- 07_Linux終端命令格式
- 08_文件和目錄常用命令
- 09_遠程管理常用命令
- 10_用戶權限相關命令
- 11_系統信息相關命令
- 12_其他命令
- python基礎
- 01_認識 Python
- 02_第一個Python 程序
- 03_PyCharm的初始設置(知道)
- 04_多文件項目的演練
- 05_注釋
- 06_算數運算符
- 07_程序執行原理(科普)
- 08_變量的基本使用
- 09_變量的命名
- 10_判斷(if)語句
- 11_運算符
- 12_循環
- 13_函數基礎
- 14_高級變量類型
- 15_綜合應用——名片管理系統
- 16_變量進階(理解)
- 17_函數進階.md
- 面向對象
- 01_面向對象(OOP)基本概念
- 02_類和對象
- 03_面向對象基礎語法
- 04_面向對象封裝案例
- 05_面向對象封裝案例 II