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 格式通常需要额外安装工具(如 unrar、p7zip)。
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 -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
这里我们添加源都指在 /etc/apt/sources.list.d/ 添加源。基础源的添加见 重装系统
1 2
| sudo add-apt-repository ppa:<repository_name>
|
上述命令会在 /etc/apt/sources.list.d/ 目录下创建一个新的源文件。同时添加了 GPG 密钥以验证软件包的完整性。
- 方法2
1
| echo "deb [arch=amd64] http://example.com/repo/ stable main" | sudo tee /etc/apt/sources.list.d/example.list
|
- GPG密钥添加
APT 源不仅仅要有地址,还必须验证签名。一般来说签名文件的位置在 /usr/share/keyrings/ 目录下。
1 2
| curl -fsSL https://example.com/repo.gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpg
|
3. 网络相关
ping 命令
基本介绍
ping 用来测试你的主机与目标主机之间是否连通,以及连通质量如何。
工作原理
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
| 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% packet loss
|
坏的情况:
1 2 3 4
| Request timeout for icmp_seq 3
|
常见误区
ping 通不代表应用层可用:即使 ping 成功,也不一定意味着应用层服务(如 HTTP、FTP)是可用的。
需要使用 telnet 、 nc 、 curl 等工具测试具体端口的连通性。
ping 不通不代表网络不可达:有些主机可能配置了防火墙规则,禁止响应 ICMP 请求。
常用参数
| 参数 |
含义 |
-c <count> |
发送指定数量的请求包 |
-i <interval> |
设置发送请求包的时间间隔(秒) |
-s <size> |
指定发送数据包的大小(字节) |
-W <timeout> |
设置等待每个回复的超时时间(秒) |
4. git 相关
git 是分布式版本控制系统,常用命令如下:
- 初始化和克隆
1 2 3 4 5
| git init
git clone <repository_url>
|
- 文件状态查看
1 2 3 4 5 6 7 8
| git status
git diff
git diff --cached
|
- 添加和提交
1 2 3 4 5 6
| git add <file_name> git add .
git commit -m "commit message"
|
- 分支管理
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 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 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: 同步整个目录,就是把这个目录复制到目标位置(包括文件夹自身)