? 前言

Linux命令行是嵌入式开发和系统管理的核心工具。本手册整理了最常用、最实用的Linux命令,按功能分类,便于快速查找和学习。

? 使用说明

  • ? 快速查找: 使用目录快速定位所需命令
  • ? 实用示例: 每个命令都配有实际使用示例
  • ? 效率优先: 重点介绍高频使用的参数和技巧
  • ? 嵌入式友好: 特别标注嵌入式开发中的常用场景

? 文件和目录操作

基础文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 列出文件和目录
ls # 列出当前目录内容
ls -la # 详细信息,包含隐藏文件
ls -lh # 人性化显示文件大小
ls -lt # 按修改时间排序
ls -lS # 按文件大小排序

# 切换目录
cd /path/to/dir # 切换到指定目录
cd ~ # 切换到家目录
cd - # 切换到上一个目录
cd .. # 切换到上级目录

# 显示当前路径
pwd # 显示当前工作目录

# 创建目录
mkdir dirname # 创建目录
mkdir -p a/b/c # 递归创建多级目录
mkdir -m 755 dirname # 创建目录并设置权限

文件复制、移动、删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 复制文件
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
cp -p file1 file2 # 保持文件属性
cp -u file1 file2 # 只在源文件较新时复制

# 移动/重命名
mv file1 file2 # 重命名文件
mv file1 /path/ # 移动文件到目录
mv dir1 dir2 # 重命名目录

# 删除文件
rm file # 删除文件
rm -f file # 强制删除
rm -r dir # 递归删除目录
rm -rf dir # 强制递归删除(危险操作!)

# 创建链接
ln file link # 创建硬链接
ln -s file link # 创建软链接(符号链接)

文件查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# find命令 - 强大的文件查找工具
find /path -name "*.c" # 按名称查找
find /path -type f # 查找文件
find /path -type d # 查找目录
find /path -size +100M # 查找大于100M的文件
find /path -mtime -7 # 查找7天内修改的文件
find /path -user username # 查找指定用户的文件
find /path -perm 755 # 查找指定权限的文件

# locate命令 - 快速查找(需要updatedb)
locate filename # 快速查找文件
updatedb # 更新文件数据库

# which和whereis
which command # 查找命令的路径
whereis command # 查找命令、源码、手册的路径

? 文件内容操作

查看文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看文件内容
cat file # 显示整个文件内容
cat -n file # 显示行号
cat -A file # 显示所有字符(包括控制字符)

# 分页查看
less file # 分页查看(推荐)
more file # 分页查看
head file # 显示文件前10行
head -n 20 file # 显示前20行
tail file # 显示文件后10行
tail -n 20 file # 显示后20行
tail -f file # 实时监控文件变化(常用于日志)

文本搜索和处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# grep - 文本搜索
grep "pattern" file # 搜索模式
grep -i "pattern" file # 忽略大小写
grep -r "pattern" dir # 递归搜索目录
grep -n "pattern" file # 显示行号
grep -v "pattern" file # 反向匹配(不包含模式的行)
grep -E "pattern1|pattern2" file # 扩展正则表达式

# sed - 流编辑器
sed 's/old/new/g' file # 替换文本
sed -i 's/old/new/g' file # 直接修改文件
sed -n '1,10p' file # 显示1-10行
sed '5d' file # 删除第5行

# awk - 文本处理工具
awk '{print $1}' file # 打印第一列
awk -F: '{print $1}' /etc/passwd # 指定分隔符
awk 'NR==5' file # 打印第5行
awk 'length > 80' file # 打印长度超过80的行

文件比较和排序

1
2
3
4
5
6
7
8
9
10
11
12
# 文件比较
diff file1 file2 # 比较两个文件
diff -u file1 file2 # 统一格式显示差异
cmp file1 file2 # 字节级比较

# 排序和去重
sort file # 排序文件内容
sort -n file # 数字排序
sort -r file # 逆序排序
sort -u file # 排序并去重
uniq file # 去除相邻重复行
uniq -c file # 统计重复次数

? 系统信息和监控

系统基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 系统信息
uname -a # 显示所有系统信息
uname -r # 显示内核版本
hostname # 显示主机名
uptime # 显示系统运行时间和负载
whoami # 显示当前用户
id # 显示用户和组ID
date # 显示当前日期时间
cal # 显示日历

# 硬件信息
lscpu # 显示CPU信息
lsblk # 显示块设备信息
lsusb # 显示USB设备
lspci # 显示PCI设备
dmidecode # 显示硬件详细信息(需要root权限)

进程管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看进程
ps aux # 显示所有进程
ps -ef # 另一种格式显示进程
pstree # 树形显示进程
top # 实时显示进程(交互式)
htop # 增强版top(需要安装)

# 进程控制
kill PID # 终止进程
kill -9 PID # 强制终止进程
killall process_name # 按名称终止进程
pkill pattern # 按模式终止进程
nohup command & # 后台运行命令,忽略挂起信号

# 任务管理
jobs # 显示当前任务
bg %1 # 将任务1放到后台
fg %1 # 将任务1调到前台
Ctrl+Z # 暂停当前任务
Ctrl+C # 终止当前任务

内存和磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
# 内存信息
free -h # 显示内存使用情况(人性化格式)
cat /proc/meminfo # 详细内存信息

# 磁盘使用
df -h # 显示磁盘使用情况
du -h dir # 显示目录大小
du -sh * # 显示当前目录下各项大小
du -h --max-depth=1 # 限制显示深度

# 磁盘I/O
iostat # 显示I/O统计信息
iotop # 实时显示I/O使用情况

? 网络工具

网络配置和状态

1
2
3
4
5
6
7
8
9
10
11
# 网络接口
ifconfig # 显示网络接口信息(传统命令)
ip addr show # 显示IP地址(现代命令)
ip route show # 显示路由表
ip link show # 显示网络接口

# 网络连接
netstat -tuln # 显示监听端口
netstat -an # 显示所有连接
ss -tuln # 现代版netstat
lsof -i :80 # 显示使用80端口的进程

网络测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 连通性测试
ping host # 测试连通性
ping -c 4 host # 发送4个包
traceroute host # 跟踪路由路径
mtr host # 结合ping和traceroute

# DNS查询
nslookup domain # DNS查询
dig domain # 详细DNS查询
host domain # 简单DNS查询

# 网络传输
wget url # 下载文件
curl url # 获取网页内容
curl -O url # 下载文件
scp file user@host:path # 安全复制文件
rsync -av src dest # 同步文件/目录

? 权限和用户管理

文件权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看权限
ls -l file # 查看文件权限

# 修改权限
chmod 755 file # 数字方式设置权限
chmod u+x file # 给所有者添加执行权限
chmod g-w file # 移除组写权限
chmod o=r file # 设置其他用户只读权限
chmod -R 644 dir # 递归设置目录权限

# 修改所有者
chown user file # 改变文件所有者
chown user:group file # 改变所有者和组
chgrp group file # 改变文件组

用户管理

1
2
3
4
5
6
7
8
9
10
11
# 用户信息
who # 显示当前登录用户
w # 显示用户活动
last # 显示登录历史
finger user # 显示用户信息

# 切换用户
su user # 切换用户
su - # 切换到root并加载环境
sudo command # 以管理员权限执行命令
sudo -u user command # 以指定用户身份执行命令

? 软件包管理

APT (Debian/Ubuntu)

1
2
3
4
5
6
7
8
9
10
11
12
# 包管理
apt update # 更新包列表
apt upgrade # 升级所有包
apt install package # 安装包
apt remove package # 删除包
apt purge package # 完全删除包(包括配置)
apt autoremove # 删除不需要的依赖

# 搜索和信息
apt search keyword # 搜索包
apt show package # 显示包信息
apt list --installed # 列出已安装包

YUM/DNF (RedHat/CentOS/Fedora)

1
2
3
4
5
6
7
8
9
10
11
# YUM命令
yum update # 更新系统
yum install package # 安装包
yum remove package # 删除包
yum search keyword # 搜索包
yum info package # 显示包信息

# DNF命令(Fedora新版本)
dnf update # 更新系统
dnf install package # 安装包
dnf remove package # 删除包

? 系统服务管理

Systemd (现代Linux发行版)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 服务控制
systemctl start service # 启动服务
systemctl stop service # 停止服务
systemctl restart service # 重启服务
systemctl reload service # 重新加载配置
systemctl enable service # 开机自启
systemctl disable service # 禁用自启

# 服务状态
systemctl status service # 查看服务状态
systemctl is-active service # 检查服务是否运行
systemctl list-units # 列出所有单元
systemctl list-unit-files # 列出所有单元文件

?? 压缩和归档

tar归档

1
2
3
4
5
6
7
8
9
10
# 创建归档
tar -cvf archive.tar files # 创建tar归档
tar -czvf archive.tar.gz files # 创建gzip压缩归档
tar -cjvf archive.tar.bz2 files # 创建bzip2压缩归档

# 解压归档
tar -xvf archive.tar # 解压tar归档
tar -xzvf archive.tar.gz # 解压gzip归档
tar -xjvf archive.tar.bz2 # 解压bzip2归档
tar -tf archive.tar # 列出归档内容

其他压缩工具

1
2
3
4
5
6
7
8
9
# zip/unzip
zip -r archive.zip files # 创建zip归档
unzip archive.zip # 解压zip归档
unzip -l archive.zip # 列出zip内容

# gzip/gunzip
gzip file # 压缩文件
gunzip file.gz # 解压文件
zcat file.gz # 查看压缩文件内容

? 系统监控和调试

性能监控

1
2
3
4
5
6
7
8
9
10
11
12
13
# 系统负载
top # 实时系统监控
htop # 增强版top
atop # 高级系统监控
vmstat 1 # 虚拟内存统计
iostat 1 # I/O统计
sar -u 1 10 # CPU使用率统计

# 网络监控
iftop # 网络流量监控
nethogs # 按进程显示网络使用
tcpdump # 网络包捕获
wireshark # 图形化网络分析工具

日志查看

1
2
3
4
5
6
7
8
9
10
# 系统日志
journalctl # 查看systemd日志
journalctl -u service # 查看特定服务日志
journalctl -f # 实时跟踪日志
journalctl --since "1 hour ago" # 查看最近1小时日志

# 传统日志
tail -f /var/log/syslog # 实时查看系统日志
tail -f /var/log/messages # 实时查看消息日志
grep ERROR /var/log/syslog # 搜索错误信息

?? 嵌入式开发专用

交叉编译环境

1
2
3
4
5
6
7
8
9
10
# 环境变量设置
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
export PATH=$PATH:/opt/toolchain/bin

# 编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

设备调试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 串口通信
minicom -D /dev/ttyUSB0 # 串口终端
screen /dev/ttyUSB0 115200 # 使用screen连接串口
picocom -b 115200 /dev/ttyUSB0 # 使用picocom

# 设备信息
lsmod # 列出加载的内核模块
modinfo module_name # 显示模块信息
dmesg # 显示内核消息
dmesg | tail # 显示最新内核消息

# GPIO和硬件
cat /proc/cpuinfo # CPU信息
cat /proc/meminfo # 内存信息
cat /proc/version # 内核版本
ls /sys/class/gpio # GPIO信息

文件系统操作

1
2
3
4
5
6
7
8
9
10
# 挂载文件系统
mount /dev/sdb1 /mnt # 挂载设备
umount /mnt # 卸载
mount -t nfs server:/path /mnt # NFS挂载
mount -o loop image.img /mnt # 挂载镜像文件

# 文件系统检查
fsck /dev/sdb1 # 检查文件系统
fsck -f /dev/sdb1 # 强制检查
df -h # 显示文件系统使用情况

? 实用技巧和快捷键

命令行快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 光标移动
Ctrl+A # 移动到行首
Ctrl+E # 移动到行尾
Ctrl+F # 向前移动一个字符
Ctrl+B # 向后移动一个字符
Alt+F # 向前移动一个单词
Alt+B # 向后移动一个单词

# 编辑
Ctrl+U # 删除光标前的内容
Ctrl+K # 删除光标后的内容
Ctrl+W # 删除光标前的单词
Ctrl+Y # 粘贴删除的内容

# 历史命令
Ctrl+R # 搜索历史命令
Ctrl+P # 上一个命令
Ctrl+N # 下一个命令
!! # 执行上一个命令
!n # 执行历史中第n个命令

管道和重定向

1
2
3
4
5
6
7
8
9
10
11
# 重定向
command > file # 重定向输出到文件
command >> file # 追加输出到文件
command < file # 从文件读取输入
command 2> file # 重定向错误输出
command &> file # 重定向所有输出

# 管道
command1 | command2 # 将command1的输出作为command2的输入
command | tee file # 同时输出到屏幕和文件
command | xargs # 将输入转换为命令参数

别名和函数

1
2
3
4
5
6
7
8
9
10
11
12
# 创建别名
alias ll='ls -la'
alias grep='grep --color=auto'
alias ..='cd ..'

# 创建函数
function mkcd() {
mkdir -p "$1" && cd "$1"
}

# 查看别名
alias # 显示所有别名

? 安全和备份

系统安全

1
2
3
4
5
6
7
8
9
10
# 防火墙
ufw enable # 启用防火墙
ufw status # 查看防火墙状态
ufw allow 22 # 允许SSH端口
ufw deny 80 # 拒绝HTTP端口

# 文件权限安全
find / -perm -4000 # 查找SUID文件
find / -perm -2000 # 查找SGID文件
find / -type f -perm 777 # 查找所有人可写的文件

备份和同步

1
2
3
4
5
6
7
8
# rsync备份
rsync -av source/ dest/ # 本地同步
rsync -av source/ user@host:dest/ # 远程同步
rsync -av --delete source/ dest/ # 同步并删除目标多余文件

# tar备份
tar -czf backup.tar.gz /important/data
tar -czf backup-$(date +%Y%m%d).tar.gz /data

? 学习资源

手册和帮助

1
2
3
4
5
man command         # 查看命令手册
info command # 查看info文档
command --help # 查看命令帮助
which command # 查找命令位置
type command # 显示命令类型

推荐学习资源

? 总结

这份Linux命令手册涵盖了日常开发和系统管理中最常用的命令。建议:

  1. 循序渐进: 从基础命令开始,逐步掌握高级功能
  2. 多加练习: 在安全环境中多实践,熟能生巧
  3. 善用手册: 遇到问题时多查看man手册
  4. 自定义环境: 根据需要设置别名和函数
  5. 安全意识: 特别是在生产环境中,谨慎使用危险命令

掌握这些命令,你将能够高效地进行Linux系统管理和嵌入式开发工作!


? 提示: 建议将常用命令制作成速查卡片,放在工作台旁边,方便随时查阅。

相关文章推荐: