18 KiB
18 KiB
🐧 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 常用参数
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 | 显示删除过程 |
rm file.txt # 删除文件(会提示确认)
rm -f file.txt # 强制删除,不提示
rm -rf folder/ # 递归强制删除整个文件夹
rm -i *.log # 删除每个 .log 文件前确认
1.4 cp 和 mv 常用参数
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/ # 保留原文件属性(权限、时间)
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 数字法(推荐):
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 符号法:
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 常用权限组合
755 # rwxr-xr-x - 目录/脚本(所有者全权,其他人只读执行)
644 # rw-r--r-- - 普通文件(所有者读写,其他人只读)
600 # rw------- - 私密文件(只有所有者可读写)
700 # rwx------ - 私密目录(只有所有者可访问)
777 # rwxrwxrwx - 完全开放(危险,慎用!)
2.2.1.5 特殊权限(高级)
权限 数字 作用
SUID 4xxx 以文件所有者身份执行(如 passwd)
SGID 2xxx 以文件所属组身份执行
Sticky 1xxx 只有所有者能删除(如 /tmp)
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 |
#添加新用户并创建家目录
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常用用法
#按名称查找
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 基础搜索
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 正则表达式
grep "^start" file.txt # 以start开头的行
grep "end$" file.txt # 以end结尾的行
grep -E "error|warning" log.txt # 扩展正则(或)
4.2.3 实用组合
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 常用组合
#系统更新完整流程
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 进程管理详解
#查看进程
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 常用操作
#查看所有磁盘和分区
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 常用操作
#查看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 常用操作
#查看文件
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(最常用)
#创建压缩包
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 其他格式
#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常用命令
#服务管理
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日志查看
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
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 环境变量
# 查看变量
echo $PATH
env # 显示所有环境变量
# 设置临时变量
export MY_VAR="value"
# 永久设置(添加到 ~/.bashrc 或 ~/.profile)
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # 立即生效
12.3 重定向总结
| 符号 | 含义 |
|---|---|
| > | 标准输出重定向(覆盖) |
| >> | 标准输出重定向(追加) |
| 2> | 错误输出重定向 |
| 2>&1 | 错误输出合并到标准输出 |
| &> | 所有输出重定向 |
| < | 输入重定向 |
| | | 管道(前一个输出作为后一个输入) |
#实用重定向示例
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炸弹(死机) |