Files
mkdocs/docs/adb调试命令/linux常用命令.md
2026-01-14 17:55:16 +08:00

781 lines
24 KiB
Markdown
Raw 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.
# Linux 常用命令指南
## 目录
- [文件与目录操作](#文件与目录操作)
- [文件查看与编辑](#文件查看与编辑)
- [文件搜索](#文件搜索)
- [权限管理](#权限管理)
- [进程管理](#进程管理)
- [系统信息](#系统信息)
- [网络操作](#网络操作)
- [压缩与解压](#压缩与解压)
- [文本处理](#文本处理)
- [磁盘管理](#磁盘管理)
- [用户管理](#用户管理)
- [服务管理](#服务管理)
- [常用快捷键](#常用快捷键)
- [组合命令](#组合命令)
---
## 文件与目录操作
### 目录操作
```bash
# 查看当前目录
pwd
# 切换目录
cd <目录路径>
cd ~ # 切换到用户主目录
cd - # 切换到上一个目录
cd .. # 切换到上级目录
cd / # 切换到根目录
# 列出目录内容
ls # 列出当前目录文件
ls -l # 详细列表(长格式)
ls -a # 显示隐藏文件
ls -la # 详细列表包含隐藏文件
ls -lh # 人类可读的文件大小
ls -lt # 按时间排序
ls -ltr # 按时间倒序
ls -R # 递归列出子目录
# 创建目录
mkdir <目录名> # 创建单个目录
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
mkdir dir1 dir2 dir3 # 创建多个目录
# 删除目录
rmdir <目录名> # 删除空目录
rm -r <目录名> # 递归删除目录
rm -rf <目录名> # 强制递归删除(危险!)
```
### 文件操作
```bash
# 创建文件
touch <文件名> # 创建空文件或更新文件时间戳
touch file1 file2 file3 # 创建多个文件
# 复制文件
cp <源文件> <目标文件> # 复制文件
cp -r <源目录> <目标目录> # 递归复制目录
cp -p <源文件> <目标文件> # 保留文件属性
cp -a <源目录> <目标目录> # 归档复制(保留所有属性)
# 移动/重命名文件
mv <源文件> <目标文件> # 移动或重命名文件
mv <源目录> <目标目录> # 移动目录
# 删除文件
rm <文件名> # 删除文件
rm -f <文件名> # 强制删除(不提示)
rm -i <文件名> # 交互式删除(提示确认)
rm -rf <目录> # 递归强制删除目录(危险!)
```
### 文件链接
```bash
# 创建硬链接
ln <源文件> <链接名>
# 创建软链接(符号链接)
ln -s <源文件> <链接名>
ln -s <源目录> <链接目录>
```
---
## 文件查看与编辑
### 查看文件内容
```bash
# 查看整个文件
cat <文件名> # 显示文件全部内容
cat -n <文件名> # 显示行号
cat file1 file2 # 连接多个文件显示
# 分页查看
less <文件名> # 分页查看(可上下滚动)
more <文件名> # 分页查看(只能向下)
# 查看文件头部
head <文件名> # 显示前10行
head -n 20 <文件名> # 显示前20行
head -c 100 <文件名> # 显示前100字节
# 查看文件尾部
tail <文件名> # 显示后10行
tail -n 20 <文件名> # 显示后20行
tail -f <文件名> # 实时跟踪文件变化(常用于日志)
tail -F <文件名> # 跟踪文件(文件被删除重建后继续跟踪)
# 查看文件类型
file <文件名> # 显示文件类型信息
# 统计文件信息
wc <文件名> # 统计行数、单词数、字节数
wc -l <文件名> # 只统计行数
wc -w <文件名> # 只统计单词数
wc -c <文件名> # 只统计字节数
```
### 文件编辑
```bash
# vi/vim 编辑器
vi <文件名> # 打开文件编辑
vim <文件名> # 打开文件编辑增强版vi
# nano 编辑器(简单易用)
nano <文件名> # 打开文件编辑
# 基本vim操作
# 进入编辑模式:按 i插入或 a追加
# 退出编辑模式:按 Esc
# 保存并退出::wq 或 :x
# 不保存退出::q!
# 保存不退出::w
```
---
## 文件搜索
### find 命令
```bash
# 按名称搜索
find <目录> -name "<文件名>" # 精确匹配
find <目录> -name "*.txt" # 通配符匹配
find <目录> -iname "*.txt" # 忽略大小写
# 按类型搜索
find <目录> -type f # 只查找文件
find <目录> -type d # 只查找目录
find <目录> -type l # 只查找链接
# 按大小搜索
find <目录> -size +100M # 大于100MB的文件
find <目录> -size -10k # 小于10KB的文件
find <目录> -size 50M # 等于50MB的文件
# 按时间搜索
find <目录> -mtime -7 # 7天内修改的文件
find <目录> -mtime +30 # 30天前修改的文件
find <目录> -mmin -60 # 60分钟内修改的文件
# 按权限搜索
find <目录> -perm 644 # 权限为644的文件
find <目录> -perm -u+x # 用户有执行权限的文件
# 执行操作
find <目录> -name "*.log" -delete # 删除找到的文件
find <目录> -name "*.txt" -exec rm {} \; # 对找到的文件执行命令
find <目录> -name "*.txt" -ok rm {} \; # 交互式执行
```
### locate 命令(需要先建立索引)
```bash
locate <文件名> # 快速搜索文件(基于数据库)
updatedb # 更新locate数据库需要root
```
### grep 命令(文本搜索)
```bash
# 基本搜索
grep "关键字" <文件名> # 在文件中搜索
grep -i "关键字" <文件名> # 忽略大小写
grep -v "关键字" <文件名> # 反向搜索(不匹配的行)
grep -n "关键字" <文件名> # 显示行号
grep -c "关键字" <文件名> # 统计匹配行数
# 递归搜索
grep -r "关键字" <目录> # 递归搜索目录
grep -r -n "关键字" <目录> # 递归搜索并显示行号
# 正则表达式
grep "^关键字" <文件名> # 以关键字开头
grep "关键字$" <文件名> # 以关键字结尾
grep -E "正则表达式" <文件名> # 扩展正则表达式
# 上下文显示
grep -A 3 "关键字" <文件名> # 显示匹配行及后3行
grep -B 3 "关键字" <文件名> # 显示匹配行及前3行
grep -C 3 "关键字" <文件名> # 显示匹配行及前后3行
```
### which/whereis 命令
```bash
which <命令> # 查找命令的完整路径
whereis <命令> # 查找命令、源码和手册页位置
```
---
## 权限管理
### 查看权限
```bash
ls -l <文件名> # 查看文件权限
stat <文件名> # 查看详细文件信息
```
### 修改权限chmod
```bash
# 数字方式
chmod 755 <文件名> # rwxr-xr-x
chmod 644 <文件名> # rw-r--r--
chmod 777 <文件名> # rwxrwxrwx所有权限
# 符号方式
chmod u+x <文件名> # 用户添加执行权限
chmod g-w <文件名> # 组移除写权限
chmod o+r <文件名> # 其他用户添加读权限
chmod a+x <文件名> # 所有人添加执行权限
chmod u=rwx,g=rx,o=r <文件名> # 分别设置权限
# 递归修改
chmod -R 755 <目录> # 递归修改目录及子目录权限
```
### 修改所有者chown
```bash
chown <用户> <文件名> # 修改文件所有者
chown <用户>:<组> <文件名> # 修改所有者和组
chown -R <用户> <目录> # 递归修改目录所有者
```
### 修改组chgrp
```bash
chgrp <组名> <文件名> # 修改文件组
chgrp -R <组名> <目录> # 递归修改目录组
```
### 特殊权限
```bash
# SUIDSet User ID
chmod u+s <文件名> # 执行时以文件所有者身份运行
# SGIDSet Group ID
chmod g+s <文件名> # 执行时以文件组身份运行
# Sticky Bit
chmod +t <目录> # 目录中只有所有者可以删除文件
```
---
## 进程管理
### 查看进程
```bash
# 基本查看
ps # 显示当前终端进程
ps aux # 显示所有进程详细信息
ps -ef # 显示所有进程(另一种格式)
ps aux | grep <进程名> # 搜索特定进程
# 实时查看
top # 实时显示进程(类似任务管理器)
htop # 增强版top需要安装
top -p <PID> # 只显示指定进程
# 按资源排序
top -o %CPU # 按CPU使用率排序
top -o %MEM # 按内存使用率排序
```
### 进程控制
```bash
# 启动进程
<命令> & # 后台运行命令
nohup <命令> & # 后台运行,终端关闭后继续
# 终止进程
kill <PID> # 终止进程发送SIGTERM信号
kill -9 <PID> # 强制终止发送SIGKILL信号
killall <进程名> # 终止所有同名进程
pkill <进程名> # 按名称终止进程
# 暂停/恢复进程
kill -STOP <PID> # 暂停进程
kill -CONT <PID> # 恢复进程
# 查看进程树
pstree # 显示进程树
pstree -p # 显示进程树和PID
```
### 作业控制
```bash
jobs # 查看后台作业
fg <作业号> # 将后台作业调到前台
bg <作业号> # 将暂停的作业放到后台运行
```
---
## 系统信息
### 系统版本
```bash
uname -a # 显示所有系统信息
uname -r # 显示内核版本
uname -m # 显示机器架构
cat /etc/os-release # 显示发行版信息
lsb_release -a # 显示LSB信息需要安装
```
### CPU信息
```bash
cat /proc/cpuinfo # 显示CPU详细信息
lscpu # 显示CPU架构信息
nproc # 显示CPU核心数
```
### 内存信息
```bash
free # 显示内存使用情况
free -h # 人类可读格式
free -m # 以MB为单位
cat /proc/meminfo # 详细内存信息
```
### 磁盘信息
```bash
df # 显示磁盘使用情况
df -h # 人类可读格式
df -i # 显示inode使用情况
du <目录> # 显示目录占用空间
du -h <目录> # 人类可读格式
du -sh <目录> # 只显示总计
du -h --max-depth=1 <目录> # 只显示一级子目录
```
### 系统负载
```bash
uptime # 显示系统运行时间和负载
w # 显示登录用户和负载
```
### 硬件信息
```bash
lspci # 显示PCI设备
lsusb # 显示USB设备
dmidecode # 显示硬件信息需要root
```
---
## 网络操作
### 网络配置
```bash
# 查看IP地址
ifconfig # 显示网络接口信息
ip addr # 显示IP地址新命令
ip addr show # 显示所有接口
hostname -I # 显示本机IP地址
# 配置网络
ifconfig <接口> <IP地址> # 设置IP地址
ip addr add <IP地址>/<掩码> dev <接口> # 添加IP地址
# 查看路由
route -n # 显示路由表
ip route # 显示路由表(新命令)
```
### 网络连接测试
```bash
ping <主机> # 测试网络连通性
ping -c 4 <主机> # 发送4个包后停止
ping -i 2 <主机> # 每2秒发送一次
# 端口测试
telnet <主机> <端口> # 测试端口连通性
nc -zv <主机> <端口> # 测试端口netcat
```
### 网络下载
```bash
wget <URL> # 下载文件
wget -c <URL> # 断点续传
wget -r <URL> # 递归下载
curl <URL> # 下载文件(支持更多协议)
curl -O <URL> # 保存文件
curl -L <URL> # 跟随重定向
```
### 网络统计
```bash
netstat -an # 显示所有网络连接
netstat -tuln # 显示监听端口
netstat -rn # 显示路由表
ss -an # 显示网络连接(新命令,更快)
ss -tuln # 显示监听端口
```
### 防火墙
```bash
# iptables需要root
iptables -L # 列出规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 添加规则
# ufwUbuntu防火墙
ufw status # 查看状态
ufw enable # 启用防火墙
ufw allow 80/tcp # 允许端口
ufw deny 22/tcp # 拒绝端口
```
---
## 压缩与解压
### tar 命令
```bash
# 压缩
tar -czf <压缩包名>.tar.gz <目录> # 创建gzip压缩包
tar -cjf <压缩包名>.tar.bz2 <目录> # 创建bzip2压缩包
tar -cJf <压缩包名>.tar.xz <目录> # 创建xz压缩包
# 解压
tar -xzf <压缩包名>.tar.gz # 解压gzip压缩包
tar -xjf <压缩包名>.tar.bz2 # 解压bzip2压缩包
tar -xJf <压缩包名>.tar.xz # 解压xz压缩包
# 查看压缩包内容
tar -tzf <压缩包名>.tar.gz # 列出gzip压缩包内容
tar -tjf <压缩包名>.tar.bz2 # 列出bzip2压缩包内容
# 常用选项说明
# -c: 创建压缩包
# -x: 解压
# -z: gzip压缩
# -j: bzip2压缩
# -J: xz压缩
# -f: 指定文件名
# -v: 显示过程
# -C: 指定解压目录
```
### zip/unzip 命令
```bash
zip -r <压缩包名>.zip <目录> # 压缩目录
zip <压缩包名>.zip <文件1> <文件2> # 压缩文件
unzip <压缩包名>.zip # 解压
unzip -l <压缩包名>.zip # 查看压缩包内容
unzip -d <目录> <压缩包名>.zip # 解压到指定目录
```
### gzip/gunzip 命令
```bash
gzip <文件名> # 压缩文件(生成.gz文件
gunzip <文件名>.gz # 解压.gz文件
gzip -d <文件名>.gz # 解压(另一种方式)
```
---
## 文本处理
### 文本过滤
```bash
# cut 命令(按列提取)
cut -d: -f1 /etc/passwd # 以:为分隔符提取第1列
cut -c1-10 <文件名> # 提取第1-10个字符
# sort 命令(排序)
sort <文件名> # 排序文件
sort -r <文件名> # 倒序排序
sort -n <文件名> # 按数字排序
sort -u <文件名> # 去重排序
# uniq 命令(去重)
uniq <文件名> # 去除相邻重复行
uniq -c <文件名> # 统计重复次数
uniq -d <文件名> # 只显示重复行
uniq -u <文件名> # 只显示不重复行
# 组合使用
sort <文件名> | uniq # 排序后去重
```
### 文本替换
```bash
# sed 命令(流编辑器)
sed 's/旧文本/新文本/g' <文件名> # 替换文本
sed -i 's/旧文本/新文本/g' <文件名> # 直接修改文件
sed 's/旧文本/新文本/g' <文件名> > 新文件 # 保存到新文件
sed -n '10,20p' <文件名> # 显示第10-20行
sed '10,20d' <文件名> # 删除第10-20行
# tr 命令(字符转换)
tr 'a-z' 'A-Z' < <文件名> # 小写转大写
tr -d '\n' < <文件名> # 删除换行符
```
### awk 命令(文本处理工具)
```bash
awk '{print $1}' <文件名> # 打印第1列
awk -F: '{print $1}' <文件名> # 以:为分隔符打印第1列
awk '/关键字/ {print}' <文件名> # 打印包含关键字的行
awk '{sum+=$1} END {print sum}' <文件名> # 计算第1列总和
```
---
## 磁盘管理
### 磁盘分区
```bash
fdisk -l # 列出所有分区需要root
lsblk # 以树形显示块设备
parted -l # 显示分区信息
```
### 挂载/卸载
```bash
mount # 显示已挂载的文件系统
mount <设备> <挂载点> # 挂载设备
umount <挂载点> # 卸载设备
umount -l <挂载点> # 强制卸载lazy unmount
```
### 文件系统检查
```bash
fsck <设备> # 检查文件系统需要root
fsck -y <设备> # 自动修复错误
```
---
## 用户管理
### 用户操作
```bash
whoami # 显示当前用户名
id # 显示用户ID和组ID
who # 显示登录用户
w # 显示登录用户和活动
# 添加/删除用户需要root
useradd <用户名> # 添加用户
userdel <用户名> # 删除用户
passwd <用户名> # 修改用户密码
```
### 切换用户
```bash
su <用户名> # 切换用户
su - <用户名> # 切换用户并加载环境变量
sudo <命令> # 以root权限执行命令
sudo -u <用户> <命令> # 以指定用户执行命令
```
### 组操作
```bash
groups # 显示当前用户所属组
groupadd <组名> # 添加组需要root
groupdel <组名> # 删除组需要root
usermod -aG <组名> <用户名> # 将用户添加到组需要root
```
---
## 服务管理
### systemd 服务现代Linux发行版
```bash
systemctl status <服务名> # 查看服务状态
systemctl start <服务名> # 启动服务
systemctl stop <服务名> # 停止服务
systemctl restart <服务名> # 重启服务
systemctl reload <服务名> # 重新加载配置
systemctl enable <服务名> # 设置开机自启
systemctl disable <服务名> # 取消开机自启
systemctl list-units # 列出所有服务
systemctl list-unit-files # 列出所有服务文件
```
### service 命令(传统方式)
```bash
service <服务名> status # 查看服务状态
service <服务名> start # 启动服务
service <服务名> stop # 停止服务
service <服务名> restart # 重启服务
```
---
## 常用快捷键
### 终端快捷键
```bash
Ctrl + C # 中断当前命令
Ctrl + D # 退出终端/结束输入
Ctrl + Z # 暂停进程(放入后台)
Ctrl + L # 清屏等同于clear
Ctrl + A # 移动到行首
Ctrl + E # 移动到行尾
Ctrl + U # 删除光标前所有内容
Ctrl + K # 删除光标后所有内容
Ctrl + W # 删除光标前一个单词
Ctrl + R # 搜索历史命令
Tab # 自动补全
```
### 历史命令
```bash
history # 显示命令历史
history | grep <关键字> # 搜索历史命令
!! # 执行上一条命令
!<编号> # 执行历史中指定编号的命令
!<字符串> # 执行最近以字符串开头的命令
```
---
## 组合命令
### 管道操作
```bash
# 基本管道
命令1 | 命令2 # 将命令1的输出作为命令2的输入
# 示例
ps aux | grep python # 查找python进程
cat file.txt | grep "关键字" # 在文件中搜索
ls -l | wc -l # 统计文件数量
```
### 重定向
```bash
命令 > 文件 # 输出重定向到文件(覆盖)
命令 >> 文件 # 输出追加到文件
命令 < 文件 # 从文件读取输入
命令 2> 文件 # 错误输出重定向
命令 > 文件 2>&1 # 标准输出和错误都重定向
命令 > /dev/null 2>&1 # 丢弃所有输出
```
### 逻辑操作
```bash
命令1 && 命令2 # 命令1成功才执行命令2
命令1 || 命令2 # 命令1失败才执行命令2
命令1 ; 命令2 # 顺序执行命令(无论成功失败)
```
### 常用组合示例
```bash
# 查找并删除
find . -name "*.log" -delete
# 统计文件行数
find . -name "*.txt" -exec wc -l {} \; | awk '{sum+=$1} END {print sum}'
# 查找大文件
find . -type f -size +100M -exec ls -lh {} \;
# 批量重命名
for file in *.txt; do mv "$file" "${file%.txt}.bak"; done
# 监控日志
tail -f /var/log/syslog | grep "ERROR"
# 压缩并删除原文件
tar -czf backup.tar.gz dir/ && rm -rf dir/
# 查找并替换
find . -name "*.txt" -exec sed -i 's/旧文本/新文本/g' {} \;
```
---
## 实用技巧
### 别名设置
```bash
# 临时设置
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# 永久设置(添加到 ~/.bashrc 或 ~/.bash_profile
echo "alias ll='ls -alF'" >> ~/.bashrc
source ~/.bashrc # 重新加载配置
```
### 环境变量
```bash
echo $PATH # 显示PATH变量
export PATH=$PATH:/新路径 # 添加PATH
export VAR=value # 设置环境变量
env # 显示所有环境变量
```
### 后台运行
```bash
nohup <命令> & # 后台运行,忽略挂起信号
screen -S <会话名> # 创建screen会话
screen -r <会话名> # 恢复screen会话
tmux new -s <会话名> # 创建tmux会话
tmux attach -t <会话名> # 附加到tmux会话
```
---
## 常用命令速查表
| 功能 | 命令 |
|------|------|
| 查看当前目录 | `pwd` |
| 列出文件 | `ls -lah` |
| 切换目录 | `cd <目录>` |
| 创建目录 | `mkdir -p dir1/dir2` |
| 删除文件 | `rm -rf <文件/目录>` |
| 复制文件 | `cp -r <源> <目标>` |
| 移动文件 | `mv <源> <目标>` |
| 查看文件 | `cat/less/more <文件>` |
| 查看头部 | `head -n 20 <文件>` |
| 查看尾部 | `tail -f <文件>` |
| 搜索文件 | `find . -name "*.txt"` |
| 搜索文本 | `grep -r "关键字" <目录>` |
| 查看进程 | `ps aux \| grep <进程>` |
| 终止进程 | `kill -9 <PID>` |
| 查看内存 | `free -h` |
| 查看磁盘 | `df -h` |
| 查看网络 | `ifconfig``ip addr` |
| 测试网络 | `ping <主机>` |
| 压缩文件 | `tar -czf file.tar.gz dir/` |
| 解压文件 | `tar -xzf file.tar.gz` |
| 修改权限 | `chmod 755 <文件>` |
| 修改所有者 | `chown user:group <文件>` |
| 查看系统信息 | `uname -a` |
| 查看系统负载 | `uptime` |
---
## 注意事项
1. **权限问题**很多系统管理命令需要root权限使用`sudo`
2. **路径问题**:注意绝对路径和相对路径的区别
3. **通配符**`*` 匹配任意字符,`?` 匹配单个字符
4. **危险命令**`rm -rf``dd``mkfs` 等命令要谨慎使用
5. **命令历史**:使用 `history` 查看,`Ctrl+R` 搜索
6. **帮助文档**:使用 `man <命令>``<命令> --help` 查看帮助
---
## 参考资源
- [Linux命令大全](https://www.runoob.com/linux/linux-command-manual.html)
- [GNU Coreutils文档](https://www.gnu.org/software/coreutils/manual/)
- [Linux man pages](https://man7.org/linux/man-pages/)
---
*最后更新2024年*