Files
HK-IT-Docs/Debian-Linux 常用命令速查手册.md

591 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐧 Debian/Linux 常用命令速查手册
# 📁1. 文件和目录操作
## 1.1 基础操作
| 命令 | 作用 | 示例 |
|------|------|------|
| ls | 列出目录内容 | `ls -la`(显示所有,含隐藏文件) |
| cd | 切换目录 | `cd /home/user` |
| pwd | 显示当前路径 | `pwd` |
| mkdir | 创建目录 | `mkdir -p dir1/dir2`(递归创建) |
| rmdir | 删除空目录 | `rmdir empty_dir` |
| rm | 删除文件或目录 | `rm -rf dir/`(递归强制删除) |
| cp | 复制 | `cp -r source/ dest/`(递归复制) |
| mv | 移动/重命名 | `mv old.txt new.txt` |
| touch | 创建空文件或更新时间戳 | `touch file.txt` |
| file | 查看文件类型 | `file unknown.bin` |
## 1.2 ls 常用参数
```bash
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示所有文件(包括 . 开头的隐藏文件)
ls -h # 人类可读的大小(1K, 234M, 2G
ls -t # 按修改时间排序
ls -r # 反向排序
ls -R # 递归显示子目录
```
ls -lah # 最常用:详细+人类可读+隐藏文件
## 1.3 rm 参数详解
| 参数 | 含义 | 说明 |
|------|------|------|
| -f | force | 强制删除,不提示,忽略不存在的文件 |
| -r 或 -R | recursive | 递归删除(删文件夹必须用) |
| -i | interactive | 删除前逐个确认 |
| -v | verbose | 显示删除过程 |
```bash
rm file.txt # 删除文件(会提示确认)
rm -f file.txt # 强制删除,不提示
rm -rf folder/ # 递归强制删除整个文件夹
rm -i *.log # 删除每个 .log 文件前确认
```
## 1.4 cp 和 mv 常用参数
```bash
cp source dest # 复制文件
cp -r src_dir/ dest_dir/ # 递归复制目录
cp -i file.txt backup/ # 覆盖前提示
cp -u file.txt backup/ # 只复制更新的文件(update
cp -p file.txt backup/ # 保留原文件属性(权限、时间)
```
```bash
mv old.txt new.txt # 重命名
mv file.txt folder/ # 移动文件
mv -i file.txt folder/ # 覆盖前提示
mv -u file.txt folder/ # 只移动更新的文件
```
# 🔐2. 权限管理
## 2.1 Linux 权限基础
每个文件/目录有三组权限:所有者(u)、所属组(g)、其他人(o)
```
-rwxr-xr--
^ ^^^ ^^^ ^^^
| | | └─ 其他人权限
| | └───── 组权限
| └───────── 所有者权限
└──────────── 类型(-文件,d目录,l链接)
r = 读 (4)
w = 写 (2)
x = 执行 (1)
```
## 2.2 常用命令
| 命令 | 作用 | 示例 |
|------|------|------|
| chmod | 修改权限 | `chmod 755 script.sh` |
| chown | 修改所有者 | `chown user:group file.txt` |
| chgrp | 修改所属组 | `chgrp staff file.txt` |
| umask | 设置默认权限掩码 | `umask 022` |
### 2.2.1 chmod 两种写法
#### 2.2.1.1 数字法(推荐):
```bash
chmod 755 file.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 secret.txt # rw-------
chmod 777 temp/ # rwxrwxrwx(危险!)
```
#### 2.2.1.2 符号法:
```bash
chmod u+x file.sh # 所有者加执行权限
chmod g-w file.txt # 组去掉写权限
chmod o=r file.txt # 其他人设为只读
chmod a+x script.sh # 所有人加执行权限(a=all
```
#### 2.2.1.3 权限数字对照表
| 数字 | 权限 | 含义 |
|------|------|------|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r-- | 只读 |
| 3 | -wx | 写+执行 |
| 2 | -w- | 只写 |
| 1 | --x | 只执行 |
| 0 | --- | 无权限 |
#### 2.2.1.4 常用权限组合
```bash
755 # rwxr-xr-x - 目录/脚本(所有者全权,其他人只读执行)
644 # rw-r--r-- - 普通文件(所有者读写,其他人只读)
600 # rw------- - 私密文件(只有所有者可读写)
700 # rwx------ - 私密目录(只有所有者可访问)
777 # rwxrwxrwx - 完全开放(危险,慎用!)
```
#### 2.2.1.5 特殊权限(高级)
```bash
权限 数字 作用
SUID 4xxx 以文件所有者身份执行(如 passwd)
SGID 2xxx 以文件所属组身份执行
Sticky 1xxx 只有所有者能删除(如 /tmp)
```
```bash
chmod 4755 file # 添加 SUID
chmod 1777 /tmp # 添加 Sticky 位
```
# 👤3. 用户和组管理
| 命令 | 作用 | 示例 |
|------|------|------|
| whoami | 显示当前用户 | `whoami` |
| id | 显示用户ID和组信息 | `id username` |
| users | 显示登录用户 | `users` |
| who | 显示谁在登录 | `who -a` |
| su | 切换用户 | `su - root` |
| sudo | 以root身份执行 | `sudo command` |
| useradd | 添加用户 | `useradd -m newuser` |
| usermod | 修改用户 | `usermod -aG sudo user` |
| userdel | 删除用户 | `userdel -r user` |
| passwd | 修改密码 | `passwd username` |
| groupadd | 添加组 | `groupadd groupname` |
| groups | 显示用户所属组 | `groups username` |
```bash
#添加新用户并创建家目录
sudo useradd -m -s /bin/bash newuser
#将用户加入 sudo 组(Debian/Ubuntu
sudo usermod -aG sudo newuser
#删除用户及家目录
sudo userdel -r olduser
#切换到 root(需要root密码)
su -
#以 root 执行单条命令
sudo apt update
```
# 🔍4. 文件查找和搜索
| 命令 | 作用 | 示例 |
|------|------|------|
| find | 按条件查找文件 | `find / -name "*.txt"` |
| locate | 快速查找(需数据库) | `locate filename` |
| which | 查找命令路径 | `which python` |
| whereis | 查找命令/源码/手册 | `whereis ls` |
| grep | 搜索文件内容 | `grep "text" file.txt` |
| awk | 文本处理 | `awk '{print $1}' file` |
| sed | 流编辑器 | `sed 's/old/new/g' file` |
## 4.1 find常用用法
```bash
#按名称查找
find /home -name "*.jpg" # 区分大小写
find /home -iname "*.jpg" # 不区分大小写
#按类型查找
find . -type f # 只找文件
find . -type d # 只找目录
find . -type l # 只找链接
#按大小查找
find / -size +100M # 大于100MB
find / -size -1k # 小于1KB
#按时间查找
find . -mtime -7 # 7天内修改过
find . -mtime +30 # 30天前修改
find . -amin -60 # 60分钟内访问过
#组合条件
find . -name "*.log" -mtime -7 # 最近7天的log文件
find . -type f -size +1G -delete # 删除大于1GB的文件
#执行操作
find . -name "*.tmp" -exec rm {} \; # 删除找到的文件
find . -name "*.txt" -exec cp {} /backup/ \; # 复制到备份目录
```
## 4.2 grep常用用法
### 4.2.1 基础搜索
```bash
grep "error" log.txt # 搜索字符串
grep -i "error" log.txt # 忽略大小写
grep -r "TODO" ./src/ # 递归搜索目录
grep -n "error" log.txt # 显示行号
grep -v "debug" log.txt # 反向匹配(不含debug的行)
```
### 4.2.2 正则表达式
```bash
grep "^start" file.txt # 以start开头的行
grep "end$" file.txt # 以end结尾的行
grep -E "error|warning" log.txt # 扩展正则(或)
```
### 4.2.3 实用组合
```bash
ps aux | grep nginx # 查找nginx进程
grep -l "ERROR" *.log # 只显示包含ERROR的文件名
grep -c "error" log.txt # 统计匹配行数
```
# 📦5. Debian 包管理(APT
| 命令 | 作用 | 示例 |
|------|------|------|
| apt update | 更新软件包列表 | `sudo apt update` |
| apt upgrade | 升级所有可升级包 | `sudo apt upgrade` |
| apt install | 安装软件包 | `sudo apt install nginx` |
| apt remove | 删除软件包(保留配置) | `sudo apt remove nginx` |
| apt purge | 完全删除(含配置) | `sudo apt purge nginx` |
| apt autoremove | 删除无用依赖 | `sudo apt autoremove` |
| apt search | 搜索软件包 | `apt search python` |
| apt show | 显示包详细信息 | `apt show nginx` |
| apt list | 列出包(--installed | `apt list --installed` |
| dpkg | 直接操作.deb文件 | `dpkg -i package.deb` |
## 5.1 常用组合
```bash
#系统更新完整流程
sudo apt update && sudo apt upgrade -y
#查找并安装软件
apt search "image editor"
sudo apt install gimp
#清理无用包
sudo apt autoremove --purge
#查看已安装包的版本
apt list --installed | grep nginx
#修复依赖问题
sudo apt --fix-broken install
```
# 🖥️6. 进程和系统监控
| 命令 | 作用 | 示例 |
|------|------|------|
| ps | 查看进程 | `ps aux` |
| top | 动态进程监控 | `top` |
| htop | 更友好的top(需安装) | `htop` |
| kill | 终止进程 | `kill -9 PID` |
| pkill | 按名称终止 | `pkill nginx` |
| jobs | 查看后台任务 | `jobs` |
|
bg | 将任务放到后台 | `bg %1` |
| fg | 将任务调到前台 | `fg %1` |
| & | 后台运行程序 | `./script.sh &` |
| nohup | 忽略挂断信号运行 | `nohup ./script.sh &` |
## 6.1 进程管理详解
```bash
#查看进程
ps aux # 所有进程(详细)
ps -ef # 所有进程(标准格式)
ps aux | grep python # 查找特定进程
#进程树
pstree -p # 显示PID
#终止进程
kill PID # 正常终止(SIGTERM
kill -9 PID # 强制终止(SIGKILL
kill -15 PID # 同 kill PID
pkill -f "python script" # 按命令行匹配终止
#优先级
nice -n 10 ./script.sh # 降低优先级(-20最高,19最低)
renice 5 -p PID # 修改运行中进程的优先级
系统资源查看
bash
#内存
free -h # 人类可读的内存使用
cat /proc/meminfo # 详细信息
#磁盘
df -h # 磁盘分区使用情况
du -sh /home/ # 目录总大小
du -h --max-depth=1 /home/ # 各子目录大小
#CPU
lscpu # CPU信息
cat /proc/cpuinfo # 详细信息
nproc # CPU核心数
#系统负载
uptime # 系统运行时间和负载
cat /proc/loadavg # 平均负载
#网络
ss -tlnp # 查看监听端口
netstat -tlnp # 同上(需安装net-tools
```
# 📀7. 磁盘和挂载
| 命令 | 作用 | 示例 |
|------|------|------|
| lsblk | 列出块设备 | `lsblk -f`(含文件系统) |
| fdisk | 分区工具 | `sudo fdisk -l` |
| mount | 挂载设备 | `mount /dev/sda1 /mnt` |
| umount | 卸载设备 | `umount /mnt` |
| df | 磁盘使用情况 | `df -h` |
| du | 目录占用空间 | `du -sh /home` |
| blkid | 查看UUID | `sudo blkid` |
| parted | GPT分区工具 | `sudo parted -l` |
## 7.1 常用操作
```bash
#查看所有磁盘和分区
lsblk -f
#挂载NTFS硬盘
sudo mount -t ntfs-3g /dev/sdb1 /mnt/data
#卸载
sudo umount /mnt/data
#查看UUID(用于fstab自动挂载)
sudo blkid
#查看磁盘使用情况
df -Th # 显示类型和人类可读大小
#查看目录大小
du -sh /* # 根目录下各文件夹大小
fstab 自动挂载示例
#编辑 /etc/fstab 添加
UUID=1234-5678 /mnt/data ntfs-3g defaults,uid=1000,gid=1000,umask=022 0 0
```
# 🌐8. 网络相关
| 命令 | 作用 | 示例 |
|------|------|------|
| ip | 网络配置(推荐) | `ip addr show` |
| ifconfig | 网络配置(旧) | `ifconfig` |
| ping | 测试连通性 | `ping google.com` |
| curl | HTTP请求 | `curl -O http://file.zip` |
| wget | 下载文件 | `wget https://example.com/file` |
| ssh | 远程连接 | `ssh user@host` |
| scp | 安全复制 | `scp file user@host:/path/` |
| rsync | 增量同步 | `rsync -avz src/ dest/` |
| netstat | 网络统计 | `netstat -tlnp` |
| ss | socket统计(推荐) | `ss -tlnp` |
## 8.1 常用操作
```bash
#查看IP地址
ip addr show
ip -4 addr show # 只显示IPv4
#测试网络
ping -c 4 8.8.8.8
#下载文件
wget -c http://bigfile.zip # 断点续传
curl -O http://file.zip # 保存为原文件名
#查看端口监听
ss -tlnp # TCP监听端口
ss -ulnp # UDP监听端口
#测试端口连通性
nc -zv google.com 80 # 需要安装 netcat
#SSH 密钥登录
ssh-keygen -t rsa -b 4096
ssh-copy-id user@host
```
# 📜9. 文本编辑和查看
| 命令 | 作用 | 示例 |
|------|------|------|
| cat | 显示文件内容 | `cat file.txt` |
| less | 分页查看(推荐) | `less large.log` |
| head | 查看文件开头 | `head -20 file.txt` |
| tail | 查看文件结尾 | `tail -f log.txt`(实时跟踪) |
| nano | 简单编辑器 | `nano config.conf` |
| vim | 高级编辑器 | `vim script.py` |
| echo | 输出文本 | `echo "Hello" > file.txt` |
| \|(管道) | 传递输出 | `cat file \| grep word` |
| > | 重定向(覆盖) | `echo text > file` |
| >> | 重定向(追加) | `echo text >> file` |
## 9.1 常用操作
```bash
#查看文件
cat file.txt # 全部显示(适合小文件)
less file.txt # 分页(空格翻页,q退出)
head -20 file.txt # 前20行
tail -f app.log # 实时跟踪日志(Ctrl+C退出)
#重定向示例
ls -la > list.txt # 覆盖写入
echo "new line" >> list.txt # 追加
command 2> error.log # 只重定向错误输出
command &> output.log # 重定向所有输出
#管道组合
dmesg | grep error # 查找内核错误
ps aux | sort -rnk3 | head -10 # CPU占用前10进程
```
# 🗜️10. 压缩和解压
## 10.1 tar(最常用)
```bash
#创建压缩包
tar -czf archive.tar.gz folder/ # gzip压缩
tar -cjf archive.tar.bz2 folder/ # bzip2压缩
tar -cvf archive.tar folder/ # 不压缩,只打包
#解压
tar -xzf archive.tar.gz # 解压到当前目录
tar -xjf archive.tar.bz2 -C /target/ # 解压到指定目录
tar -xf archive.tar # 自动识别格式
#查看压缩包内容
tar -tzf archive.tar.gz
# 数说明
#-c 创建 -x 解压 -z gzip -j bzip2 -v 显示过程 -f 文件 -C 指定目录
```
## 10.2 其他格式
```bash
#zip
zip -r archive.zip folder/
unzip archive.zip -d /target/
#7z(需安装 p7zip
7z a archive.7z folder/
7z x archive.7z -o/target/
#gz
gunzip file.gz
gzip file.txt
```
## 10.3 查看压缩文件内容(不解压)
```
zcat file.gz | head
zless file.gz
```
# 🔧11. 系统管理和维护
| 命令 | 作用 | 示例 |
|------|------|------|
| systemctl | 服务管理 | `systemctl status nginx` |
| journalctl | 查看日志 | `journalctl -u nginx -f` |
| reboot | 重启 | `sudo reboot` |
| shutdown | 关机 | `sudo shutdown -h now` |
| uname | 系统信息 | `uname -a` |
| lsb_release | 发行版信息 | `lsb_release -a` |
| uptime | 运行时间 | `uptime` |
| dmesg | 内核日志 | `dmesg \| tail` |
| crontab | 定时任务 | `crontab -e` |
## 11.1 systemctl常用命令
```bash
#服务管理
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl reload nginx # 重载配置(不中断)
systemctl enable nginx # 开机自启
systemctl disable nginx # 取消自启
systemctl status nginx # 查看状态
#查看所有服务
systemctl list-units --type=service --state=running
# 系统操作
systemctl reboot # 重启
systemctl poweroff # 关机
systemctl suspend # 挂起
```
## 11.2 journalctl日志查看
```bash
journalctl -xe # 查看最新日志(含说明)
journalctl -u nginx # 查看nginx服务日志
journalctl -u nginx -f # 实时跟踪
journalctl --since "2024-01-01" # 指定开始时间
journalctl --since today # 今天的日志
journalctl -k # 内核日志
journalctl | grep error # 搜索错误
```
## 11.3 定时任务 Crontab
```bash
crontab -e # 编辑定时任务
crontab -l # 列出当前任务
crontab -r # 删除所有任务
# 格式:分 时 日 月 周 命令
# 示例
0 2 * * * /backup.sh # 每天2点执行
*/5 * * * * /check.sh # 每5分钟执行
0 9 * * 1-5 /report.sh # 周一至周五9点
@reboot /start-service.sh # 开机执行
```
# 🎯12. 实用技巧和快捷键
## 12.1 命令行快捷键
| 快捷键 | 作用 |
|--------|------|
| Ctrl+C | 终止当前命令 |
| Ctrl+Z | 挂起当前命令(fg恢复) |
| Ctrl+D | 退出终端(相当于exit |
| Ctrl+L | 清屏(相当于clear |
| Ctrl+A | 跳到行首 |
| Ctrl+E | 跳到行尾 |
| Ctrl+U | 删除光标前所有内容 |
| Ctrl+K | 删除光标后所有内容 |
| Ctrl+W | 删除前一个单词 |
| Ctrl+R | 历史命令搜索 |
| !! | 执行上一条命令 |
| !$ | 上一条命令的最后一个参数 |
| Tab | 自动补全 |
## 12.2 环境变量
```bash
# 查看变量
echo $PATH
env # 显示所有环境变量
# 设置临时变量
export MY_VAR="value"
# 永久设置(添加到 ~/.bashrc 或 ~/.profile
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # 立即生效
```
## 12.3 重定向总结
| 符号 | 含义 |
|------|------|
| > | 标准输出重定向(覆盖) |
| >> | 标准输出重定向(追加) |
| 2> | 错误输出重定向 |
| 2>&1 | 错误输出合并到标准输出 |
| &> | 所有输出重定向 |
| < | 输入重定向 |
| \| | 管道(前一个输出作为后一个输入) |
```bash
#实用重定向示例
command > output.txt 2>&1 # 标准输出和错误都写入文件
command &> output.txt # 同上(bash简写)
command > /dev/null 2>&1 # 忽略所有输出(静默运行)
cat < file.txt # 从文件读取输入
```
## 12,4 📚快速参考卡
常用命令速查
| 要做的事 | 命令 |
|----------|------|
| 更新系统 | `sudo apt update && sudo apt upgrade` |
| 安装软件 | `sudo apt install 包名` |
| 查看IP | `ip a` |
| 查看端口 | `ss -tlnp` |
| 查看磁盘 | `df -h` |
| 查看目录大小 | `du -sh 目录` |
| 查找文件 | `find / -name 文件名` |
| 搜索内容 | `grep -r "内容" ./` |
| 实时查看日志 | `tail -f log.txt` |
| 后台运行 | `nohup 命令 &` |
| 查看进程 | `ps aux \| grep 进程名` |
| 杀掉进程 | `kill -9 PID` |
| 重启服务 | `systemctl restart 服务名` |
| 查看服务日志 | `journalctl -u 服务名 -f` |
| 压缩文件夹 | `tar -czf archive.tar.gz 文件夹/` |
| 解压 | `tar -xzf archive.tar.gz` |
| 远程拷贝 | `scp file user@host:/path/` |
| 同步文件夹 | `rsync -avz src/ dest/` |
# 13.⚠️危险命令(永远不要运行!)
| 命令 | 说明 |
|------|------|
| `rm -rf /` | 删除整个系统 |
| `rm -rf /*` | 同上 |
| `rm -rf .*` | 会匹配到 ..(上级目录)! |
| `dd if=/dev/zero of=/dev/sda` | 清空硬盘 |
| `mkfs.ext4 /dev/sda` | 格式化硬盘 |
| `:(){ :\|:& };:` | Fork炸弹(死机) |