Linux 常用指令小本本

简要总结一下linux下常用的指令以及参数的具体含义。

1. 压缩文件相关

在 Linux 下下载软件或源码时,经常能看到各种各样的文件后缀,比如 .tar.gz.zip.xz 等。这些后缀分别代表什么?又该如何解压呢?

常见压缩文件后缀与解压方式

后缀名 说明 解压命令
.tar 仅打包,不压缩 tar -xvf file.tar
.tar.gz / .tgz 打包并使用 gzip 压缩 tar -xzvf file.tar.gz
.tar.bz2 打包并使用 bzip2 压缩 tar -xjvf file.tar.bz2
.tar.xz 打包并使用 xz 压缩 tar -xJvf file.tar.xz
.zip 使用 zip 打包并压缩 unzip file.zip
.rar 使用 WinRAR 打包并压缩 unrar x file.rar
.7z 使用 7-Zip 打包并压缩 7z x file.7z

注:

  • .rar.7z 格式通常需要额外安装工具(如 unrarp7zip)。
  • tar 是 Linux/Unix 系统中最常用的打包工具,通常与不同的压缩算法组合使用。

tar 与压缩算法的关系

可以看到,.tar 文件本身只负责打包,并不进行压缩
在 Linux / Unix 体系中,通常采用“先打包(tar),再压缩(gzip / bzip2 / xz)”的方式。

而在 Windows 环境中,更常见的是将“打包 + 压缩”合并在同一个格式中(如 .zip.rar)。

不同压缩算法的特点大致如下:

压缩算法 特点
gzip (.gz) 压缩率较高,速度快,适合大多数场景
bzip2 (.bz2) 压缩率更高,但速度较慢
xz (.xz) 压缩率最高,但压缩和解压速度最慢

tar 常用参数说明

参数 含义
-c 创建(create)归档文件
-x 解包(extract)归档文件
-t 查看归档文件内容(不解压)
-v 显示详细过程(verbose)
-f 指定文件名(file),通常必须放在最后
-z 使用 gzip 进行压缩 / 解压
-j 使用 bzip2 进行压缩 / 解压
-J 使用 xz 进行压缩 / 解压
-C 指定解压目录(change directory)

示例

1
2
3
4
5
6
7
8
# 解压到指定目录
tar -xzvf file.tar.gz -C /usr/local

# 查看压缩包内容但不解压
tar -tvf file.tar

# 创建 tar.gz 压缩包
tar -czvf archive.tar.gz dir/

2. 安装软件相关

查询软件可用版本

1
2
apt list -a <package_name>
pip index versions <package_name>

添加源来下载软件

一般来说,apt官方的源是不齐全的,很多软件需要添加第三方源才能安装。

源在哪

基础源在 /etc/apt/sources.list,其他源在 /etc/apt/sources.list.d/ 目录下。

添加源

  1. 方法1
    这里我们添加源都指在 /etc/apt/sources.list.d/ 添加源。基础源的添加见 重装系统
1
2
# 添加PPA
sudo add-apt-repository ppa:<repository_name>

上述命令会在 /etc/apt/sources.list.d/ 目录下创建一个新的源文件。同时添加了 GPG 密钥以验证软件包的完整性。

  1. 方法2
1
echo "deb [arch=amd64] http://example.com/repo/ stable main" | sudo tee /etc/apt/sources.list.d/example.list
  1. GPG密钥添加
    APT 源不仅仅要有地址,还必须验证签名。一般来说签名文件的位置在 /usr/share/keyrings/ 目录下。
1
2
# 添加 GPG 密钥
curl -fsSL https://example.com/repo.gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpg

3. 网络相关

ping 命令

基本介绍

ping 用来测试你的主机与目标主机之间是否连通,以及连通质量如何。

1
2
ping www.baidu.com
# 按Ctrl+C 停止

工作原理

ping 通过向目标主机发送 ICMP(Internet Control Message Protocol,互联网控制消息协议)回显请求报文,并等待接收回显应答报文来判断网络连通性。这是一种网络层的协议,ping 命令做的就是一个“你在吗?—我在!”的过程:本机发送一个 ICMP 回显请求(Echo Request)到目标主机,目标主机收到后会回复一个 ICMP 回显应答(Echo Reply)。通过计算发送和接收的时间差,ping 可以提供网络延迟(往返时间)等信息。

输出内容理解

1
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=18.5 ms
字段 含义
64 bytes ICMP 包大小
from 8.8.8.8 回包的主机
icmp_seq=1 第几个包
ttl=118 生存时间(路由跳数相关)
time=18.5 ms 往返延迟(RTT)
1
2
3
# Ctrl+C 停止后输出
4 packets transmitted, 4 received, 0% packet loss
rtt min/avg/max/mdev = 18.1/18.6/19.2/0.4 ms

好的情况:

1
2
3
4
5
# 有回应
64 bytes from ...
# 延迟低且稳定
# 丢包率为0%
0% packet loss

坏的情况:

1
2
3
4
# 响应超时
Request timeout for icmp_seq 3
# 延迟高
# 丢包率高

常见误区

  1. ping 通不代表应用层可用:即使 ping 成功,也不一定意味着应用层服务(如 HTTP、FTP)是可用的。
    需要使用 telnetnccurl 等工具测试具体端口的连通性。

  2. ping 不通不代表网络不可达:有些主机可能配置了防火墙规则,禁止响应 ICMP 请求。

常用参数

参数 含义
-c <count> 发送指定数量的请求包
-i <interval> 设置发送请求包的时间间隔(秒)
-s <size> 指定发送数据包的大小(字节)
-W <timeout> 设置等待每个回复的超时时间(秒)

4. git 相关

git 是分布式版本控制系统,常用命令如下:

  1. 初始化和克隆
1
2
3
4
5
# 初始化
git init

# 克隆远程仓库
git clone <repository_url>
  1. 文件状态查看
1
2
3
4
5
6
7
8
# 状态查看
git status

# 查看未暂存的改动
git diff

# 查看已暂存的改动
git diff --cached
  1. 添加和提交
1
2
3
4
5
6
# 添加文件到暂存区
git add <file_name>
git add . # 添加所有改动

# 提交到本地仓库
git commit -m "commit message"
  1. 分支管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看当前分支
git branch

# 创建新分支
git branch <branch_name>

# 切换分支
git checkout <branch_name>

# 创建并切换分支
git checkout -b <branch_name>

# 合并分支
git merge <branch_name>

# 删除分支
git branch -d <branch_name>
  1. 远程操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看远程仓库
git remote -v

# 添加远程仓库
git remote add <remote_name> <repository_url>

# 拉取合并远程更新
git pull
git pull origin <branch_name>

# 只拉取不合并远程更新
git fetch

# 推送本地提交到远程仓库
git push origin <branch_name>
  1. 查看日志
1
2
3
4
5
6
7
8
# 查看提交日志
git log

# 简洁日志
git log --oneline

# 查看所有操作历史(救命用)
git reflog

5. tee 命令

tee 命令用于从标准输入读取数据,并将其内容同时输出到标准输出和一个或多个文件中。它常用于将命令的输出保存到文件的同时,还能在终端上查看输出结果。

1
2
3
4
5
6
7
8
# 基本用法,将命令输出保存到文件并且显示在终端
command | tee output.txt

# 不显示在终端,只保存到文件
command | tee output.txt >/dev/null

# 追加模式,将输出追加到文件末尾
command | tee -a output.txt

6. rsync 命令

rsync 是一个同步文件的命令工具。
大致用法:rsync [选项] 源 目标

其中选项包括:

选项 含义 细节
-a 归档模式,等同于 -rlptgoD r:递归同步,l:保持符号链接,p:保持权限,t:保持时间戳,g:保持组,o:保持所有者,D:保持设备文件
-v verbose, 显示详细输出 显示正在同步哪些文件
-z 压缩传输数据 通过 SSH 传输时压缩数据,适合远程服务器
--delete 删除目标中源不存在的文件 保持目标与源一致,比较危险但是用的却很多
-n/--dry-run 模拟执行,不做任何实际更改 用于测试命令效果,看看哪些文件会被传输,哪些会被删除
--exclude 排除某些文件或目录 可以使用通配符,如 --exclude='*.tmp' 排除所有 .tmp 文件

其他说明:
path/: 同步目录中的内容
path: 同步整个目录,就是把这个目录复制到目标位置(包括文件夹自身)