Linux 常用指令全面详解:按功能分类的完整参考
摘要: 本文按功能分类系统整理 Linux 系统中最常用的命令行指令,涵盖文件管理、系统信息、进程管理、网络操作、用户权限、文本处理、软件包管理、磁盘存储、压缩解压、定时任务等核心场景,并附带实用示例,适合初学者查阅和进阶者速查。
来源: GNU Coreutils 手册、Linux 文档计划
一、文件与目录管理
1.1 浏览与导航
# 查看当前目录
pwd
# 列出目录内容
ls # 基本列表
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示隐藏文件
ls -lh # 人类可读的文件大小
ls -R # 递归列出子目录
ls -lt # 按修改时间排序
# 切换目录
cd /path/to/dir # 进入指定目录
cd ~ # 回到用户主目录
cd - # 回到上一个目录
cd .. # 返回上级目录
1.2 文件操作
# 创建文件
touch file.txt # 创建空文件或更新时间戳
touch file1.txt file2.txt # 同时创建多个文件
# 复制文件/目录
cp source.txt dest.txt # 复制文件
cp -r /source/dir /dest/dir # 递归复制目录
cp -i source.txt dest.txt # 覆盖前提示确认
cp -v source.txt dest.txt # 显示复制过程
# 移动/重命名
mv old.txt new.txt # 重命名文件
mv file.txt /path/to/dest/ # 移动文件
mv -i source.txt dest.txt # 覆盖前提示
# 删除
rm file.txt # 删除文件
rm -f file.txt # 强制删除(不提示)
rm -r /path/to/dir # 递归删除目录
rm -rf /path/to/dir # 强制递归删除(慎用!)
rm -i file.txt # 删除前逐一确认
# 安全删除(需安装)
sudo apt install secure-delete
srm file.txt # 安全擦除文件
1.3 目录操作
# 创建目录
mkdir newdir # 创建单个目录
mkdir -p a/b/c # 递归创建多级目录
mkdir -m 755 public_dir # 创建时指定权限
# 删除目录
rmdir emptydir # 删除空目录
rm -r nonemptydir # 删除非空目录
1.4 查看文件内容
# 查看全文
cat file.txt # 输出整个文件
cat -n file.txt # 显示行号
cat file1.txt file2.txt > merged.txt # 合并文件
# 分页查看
less file.txt # 可上下翻页查看(推荐)
more file.txt # 只能向下翻页
# 查看首尾
head -n 20 file.txt # 查看前 20 行
tail -n 20 file.txt # 查看后 20 行
tail -f /var/log/syslog # 实时跟踪日志更新
# 统计
wc file.txt # 行数、词数、字节数
wc -l file.txt # 仅统计行数
wc -w file.txt # 仅统计词数
1.5 文件搜索
# 按文件名查找
find /path -name "*.txt" # 在指定路径查找 .txt 文件
find /path -iname "*.TXT" # 不区分大小写
find /path -type d -name "logs" # 查找名为 logs 的目录
find /path -type f -size +100M # 查找大于 100MB 的文件
find /path -mtime -7 # 查找 7 天内修改过的文件
find /path -mtime +30 # 查找 30 天前修改过的文件
find /path -name "*.tmp" -delete # 查找并删除
# 按内容查找
grep "keyword" file.txt # 在文件中搜索关键词
grep -r "keyword" /path/to/dir # 递归搜索目录
grep -rn "keyword" /path # 递归搜索并显示行号
grep -i "keyword" file.txt # 不区分大小写
grep -v "keyword" file.txt # 反向匹配(排除含关键词的行)
grep -E "pattern" file.txt # 使用扩展正则表达式
grep -c "keyword" file.txt # 统计匹配行数
# 快速定位命令路径
which python3 # 查找可执行文件路径
whereis python3 # 查找命令、源码、手册位置
locate filename # 使用数据库快速定位(需 updatedb)
1.6 文件权限与属性
# 查看权限
ls -l file.txt
# 输出示例: -rwxr-xr-- 1 user group 4096 Jun 22 10:00 file.txt
# ^^^^^^^^^^
# 所有者 所属组 其他人
# rwx=读写执行
# 修改权限(数字模式)
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 file.txt # rw-------(仅所有者可读写)
chmod 777 file.txt # rwxrwxrwx(所有人可读写执行,不推荐)
# 修改权限(符号模式)
chmod +x script.sh # 添加执行权限
chmod u+w file.txt # 给所有者添加写权限
chmod go-r file.txt # 移除组和其他人的读权限
chmod -R 755 /path/to/dir # 递归修改目录权限
# 修改所有者
chown user:group file.txt # 同时修改所有者和所属组
chown user file.txt # 仅修改所有者
chown -R user:group /dir # 递归修改
# 特殊权限
chmod +s /path/to/program # 设置 SUID(以文件所有者身份执行)
chmod g+s /path/to/dir # 设置 SGID(新文件继承目录的组)
chmod +t /tmp # 设置 Sticky Bit(仅文件所有者可删除)
二、系统信息与状态
2.1 系统概览
# 系统信息
uname -a # 内核版本、架构等全部信息
uname -r # 内核版本
uname -m # 硬件架构(x86_64/aarch64)
hostname # 主机名
cat /etc/os-release # 操作系统发行版信息
lsb_release -a # 发行版详细信息
# 运行时间
uptime # 系统运行时间、负载
cat /proc/uptime # 精确运行时间(秒)
# 日历
date # 当前日期时间
cal # 当月日历
cal 2026 # 指定年份日历
2.2 硬件信息
# CPU 信息
lscpu # CPU 详细信息
cat /proc/cpuinfo # 查看 CPU 原始信息
nproc # CPU 核心数
# 内存信息
free -h # 内存使用情况(人类可读)
free -m # 以 MB 显示
cat /proc/meminfo # 内存详细信息
# 磁盘信息
lsblk # 块设备列表(磁盘和分区)
df -h # 磁盘空间使用情况
df -i # inode 使用情况
du -sh /path/to/dir # 目录总大小
du -sh /* # 根目录下各目录大小
du -ah --max-depth=2 /path # 按深度查看文件大小
# PCI/USB 设备
lspci # PCI 设备列表
lspci | grep -i vga # 查看显卡信息
lsusb # USB 设备列表
# 电池信息(笔记本)
upower -i /org/freedesktop/UPower/devices/battery_BAT0
2.3 进程与性能监控
# 进程查看
ps aux # 查看所有进程
ps aux | grep nginx # 查找特定进程
ps -ef # 完整格式显示进程
pgrep nginx # 按名称查找进程 PID
pidof nginx # 获取进程 PID
# 实时监控
top # 交互式进程监控(按 q 退出)
htop # 更美观的 top(需安装)
sudo apt install htop
htop
# 系统资源
vmstat 2 # 每 2 秒刷新一次系统状态
iostat 2 # 磁盘 I/O 统计
iotop # 按进程查看磁盘 I/O(需安装)
# 网络端口
ss -tulnp # 监听中的端口和对应进程
netstat -tulnp # 传统方式(需安装 net-tools)
# 结束进程
kill 1234 # 发送 SIGTERM 信号
kill -9 1234 # 强制终止(SIGKILL)
killall nginx # 按进程名终止
pkill -f "python script" # 按模式匹配终止
三、用户与权限管理
# 查看当前用户
whoami # 当前用户名
id # 用户 ID 和组信息
id username # 查看指定用户信息
# 切换用户
su - username # 切换用户并加载环境
sudo -i # 切换到 root
sudo su # 切换到 root(不加载环境)
# 创建用户
sudo useradd -m -s /bin/bash newuser # 创建用户并建主目录
sudo adduser newuser # 交互式创建用户(推荐)
# 修改用户
sudo passwd username # 修改用户密码
sudo usermod -aG sudo username # 添加到 sudo 组
sudo usermod -G group1,group2 username # 修改用户所属组
sudo usermod -l newname oldname # 修改用户名
# 删除用户
sudo userdel username # 删除用户
sudo userdel -r username # 删除用户及其主目录
# 查看登录记录
who # 当前登录用户
last # 最近登录记录
lastlog # 所有用户最后登录时间
四、软件包管理 (APT/DPKG)
4.1 APT 操作
# 更新软件源
sudo apt update # 刷新软件包列表
sudo apt upgrade # 升级所有已安装软件包
sudo apt full-upgrade # 完整升级(可能移除旧包)
# 安装软件
sudo apt install package_name # 安装软件包
sudo apt install package1 package2 # 同时安装多个
sudo apt install ./local.deb # 安装本地 deb 文件
# 卸载软件
sudo apt remove package_name # 卸载(保留配置)
sudo apt purge package_name # 彻底卸载(含配置)
sudo apt autoremove # 清理不再需要的依赖包
# 搜索与查询
apt search keyword # 搜索软件包
apt show package_name # 查看软件包详情
apt list --installed # 列出已安装的软件包
apt list --upgradable # 列出可升级的包
# 缓存管理
sudo apt clean # 清理所有已下载的 deb 包
sudo apt autoclean # 清理过时的 deb 包
# 修复依赖
sudo apt install -f # 修复缺失的依赖关系
sudo dpkg --configure -a # 配置未完成的安装
4.2 DPKG 操作
# 查询已安装的包
dpkg -l # 列出所有已安装包
dpkg -l | grep nginx # 搜索特定包
dpkg -s package_name # 查看包状态信息
dpkg -L package_name # 查看包安装的文件列表
dpkg -S filename # 查找文件属于哪个包
# 本地安装
sudo dpkg -i package.deb # 安装本地 deb 包
sudo dpkg -r package_name # 卸载包
sudo dpkg -P package_name # 彻底卸载(含配置)
# 查看包内容
dpkg-deb -c package.deb # 查看 deb 包内容
dpkg-deb -I package.deb # 查看 deb 包信息
4.3 Snap 操作
# Snap 包管理
sudo snap install package # 安装 snap 包
sudo snap remove package # 卸载 snap 包
snap list # 列出已安装的 snap 包
snap find keyword # 搜索 snap 包
sudo snap refresh # 更新所有 snap 包
snap changes # 查看 snap 变更记录
五、网络操作
5.1 网络配置与诊断
# 网络接口
ip addr # 查看所有网络接口和 IP
ip addr show eth0 # 查看指定接口
ip link # 查看网络接口状态
ip link set eth0 up/down # 启用/禁用接口
# 路由
ip route # 查看路由表
ip route add default via 192.168.1.1 # 添加默认网关
# DNS 配置
cat /etc/resolv.conf # 查看当前 DNS
sudo systemd-resolve --status # 查看 DNS 解析状态
# 网络连通性
ping -c 4 google.com # 测试连通性(4 次)
ping -c 4 -i 0.2 192.168.1.1 # 快速 ping
traceroute google.com # 追踪路由路径
tracepath google.com # 无需 root 的路径追踪
# 端口测试
nc -zv host port # 测试端口连通性
nc -zv 192.168.1.1 22 # 测试 SSH 端口
telnet host port # 测试端口(传统方式)
# 下载文件
wget https://example.com/file.zip # 下载文件
wget -O custom_name.zip https://example.com/file # 指定文件名
wget -c https://example.com/large_file.zip # 断点续传
wget -r -np https://example.com/dir/ # 递归下载目录
curl https://example.com # 获取网页内容
curl -O https://example.com/file.zip # 下载并保存原文件名
curl -o output.txt https://example.com # 指定输出文件名
curl -L https://example.com # 跟随重定向
curl -X POST -d "key=value" https://api.example.com # POST 请求
curl -H "Authorization: Bearer token" https://api.example.com # 带认证请求
5.2 SSH 远程连接
# 连接远程主机
ssh user@192.168.1.100 # 基本连接
ssh -p 2222 user@host # 指定端口
ssh -i ~/.ssh/id_rsa user@host # 指定密钥文件
ssh -L 8080:localhost:80 user@host # 本地端口转发
ssh -R 8080:localhost:80 user@host # 远程端口转发
# 文件传输(SCP)
scp file.txt user@host:/path/ # 上传文件
scp user@host:/path/file.txt ./ # 下载文件
scp -r /local/dir user@host:/remote/ # 递归传输目录
# 文件传输(SFTP)
sftp user@host # 进入 SFTP 交互模式
put local.txt # 上传
get remote.txt # 下载
ls /remote/path # 查看远程目录
六、文本处理与编辑
6.1 流编辑器
# sed - 流编辑器
sed 's/old/new/g' file.txt # 替换文本(输出到屏幕)
sed -i 's/old/new/g' file.txt # 原地替换
sed -n '5,10p' file.txt # 打印第 5-10 行
sed '5d' file.txt # 删除第 5 行
sed '/keyword/d' file.txt # 删除包含关键词的行
sed -n '/keyword/p' file.txt # 只显示匹配的行
# awk - 文本处理
awk '{print $1}' file.txt # 打印第一列
awk -F: '{print $1}' /etc/passwd # 以 : 分隔,打印第一列
awk '/keyword/ {print NR, $0}' file.txt # 打印匹配行及其行号
awk '{sum+=$1} END {print sum}' file.txt # 计算第一列总和
# cut - 列提取
cut -d: -f1 /etc/passwd # 以 : 分隔,提取第一列
cut -c1-5 file.txt # 提取每行第 1-5 个字符
# sort & uniq - 排序与去重
sort file.txt # 按字母排序
sort -n file.txt # 按数字排序
sort -r file.txt # 倒序排序
sort file.txt | uniq # 排序并去重
sort file.txt | uniq -c # 排序并统计重复次数
6.2 文本编辑器
# Nano(简单易用)
nano file.txt # 编辑文件
# Ctrl+O 保存, Ctrl+X 退出, Ctrl+W 搜索
# Vim(功能强大)
vim file.txt # 编辑文件
# i 进入编辑模式, Esc 退出编辑, :wq 保存退出, :q! 不保存退出
# /keyword 搜索, n 下一个匹配, N 上一个匹配
# gg 跳到文件开头, G 跳到文件末尾, :set nu 显示行号
# 其他编辑器
code file.txt # VS Code(需安装)
gedit file.txt # GNOME 文本编辑器
nano ~/.bashrc # 编辑配置文件
七、系统服务管理 (Systemd)
# 服务状态
sudo systemctl status nginx # 查看服务状态
sudo systemctl is-active nginx # 是否运行中
sudo systemctl is-enabled nginx # 是否开机自启
# 服务控制
sudo systemctl start nginx # 启动服务
sudo systemctl stop nginx # 停止服务
sudo systemctl restart nginx # 重启服务
sudo systemctl reload nginx # 重载配置(不中断服务)
# 开机自启
sudo systemctl enable nginx # 启用开机自启
sudo systemctl disable nginx # 禁用开机自启
# 查看所有服务
systemctl list-units --type=service # 已加载的服务
systemctl list-unit-files --type=service # 所有可用的服务
systemctl --failed # 查看失败的服务
# 日志查看
journalctl -u nginx # 查看服务日志
journalctl -u nginx -f # 实时跟踪日志
journalctl -u nginx --since "2026-06-20" # 查看指定时间后的日志
journalctl -u nginx -n 100 # 查看最近 100 行
journalctl -xe # 查看系统错误日志
# 创建自定义服务
sudo nano /etc/systemd/system/myservice.service
# [Unit]
# Description=My Custom Service
# After=network.target
#
# [Service]
# Type=simple
# ExecStart=/usr/bin/myapp
# Restart=on-failure
#
# [Install]
# WantedBy=multi-user.target
sudo systemctl daemon-reload # 重新加载服务配置
sudo systemctl start myservice # 启动自定义服务
八、磁盘与存储管理
8.1 磁盘操作
# 磁盘信息
lsblk # 块设备树状图
lsblk -f # 包含文件系统信息
fdisk -l # 查看所有磁盘分区
# 挂载
sudo mount /dev/sdb1 /mnt/data # 挂载设备
sudo mount -t ext4 /dev/sdb1 /mnt/ # 指定文件系统类型
sudo mount -o ro /dev/sdb1 /mnt/ # 只读挂载
sudo umount /mnt/data # 卸载
# 自动挂载
sudo nano /etc/fstab
# /dev/sdb1 /mnt/data ext4 defaults 0 2
sudo mount -a # 挂载 fstab 中所有条目
# 磁盘格式化
sudo mkfs.ext4 /dev/sdb1 # 格式化为 ext4
sudo mkfs.vfat /dev/sdb1 # 格式化为 FAT32
sudo mkfs.ntfs /dev/sdb1 # 格式化为 NTFS
8.2 LVM 操作
# 物理卷
sudo pvcreate /dev/sdb # 创建物理卷
sudo pvs # 查看物理卷
# 卷组
sudo vgcreate myvg /dev/sdb # 创建卷组
sudo vgs # 查看卷组
sudo vgextend myvg /dev/sdc # 扩展卷组
# 逻辑卷
sudo lvcreate -L 100G -n mylv myvg # 创建 100GB 逻辑卷
sudo lvcreate -l 100%FREE -n mylv myvg # 使用全部剩余空间
sudo lvs # 查看逻辑卷
# 扩展逻辑卷
sudo lvextend -L +50G /dev/myvg/mylv # 增加 50GB
sudo resize2fs /dev/myvg/mylv # 扩展 ext4 文件系统
九、压缩与解压
# tar
tar -czvf archive.tar.gz /path/to/dir # 创建 .tar.gz 压缩
tar -xzvf archive.tar.gz # 解压 .tar.gz
tar -xzvf archive.tar.gz -C /dest/ # 解压到指定目录
tar -tzvf archive.tar.gz # 查看压缩包内容
tar -cjvf archive.tar.bz2 /path # 创建 .tar.bz2 压缩
# zip/unzip
zip archive.zip file1.txt file2.txt # 创建 zip
zip -r archive.zip /path/to/dir # 递归压缩目录
unzip archive.zip # 解压 zip
unzip archive.zip -d /dest/ # 解压到指定目录
unzip -l archive.zip # 查看内容
# gzip
gzip file.txt # 压缩为 file.txt.gz
gunzip file.txt.gz # 解压
# 其他格式
xz file.txt # 使用 xz 压缩
unxz file.txt.xz # 解压 xz
7z a archive.7z /path/to/dir # 创建 7z 压缩(需 p7zip)
7z x archive.7z # 解压 7z
十、计划任务 (Cron & Systemd Timer)
10.1 Crontab
# 编辑定时任务
crontab -e # 编辑当前用户的 cron
sudo crontab -e # 编辑 root 的 cron
crontab -l # 列出当前 cron 任务
crontab -r # 删除所有 cron 任务
# Cron 格式
# * * * * * command
# | | | | |
# | | | | +--- 星期 (0-7, 0和7都代表周日)
# | | | +----- 月份 (1-12)
# | | +------- 日期 (1-31)
# | +--------- 小时 (0-23)
# +----------- 分钟 (0-59)
# 示例
* * * * * /path/to/script.sh # 每分钟执行
0 * * * * /path/to/script.sh # 每小时执行
0 2 * * * /path/to/script.sh # 每天凌晨 2 点执行
0 2 * * 1 /path/to/script.sh # 每周一凌晨 2 点执行
*/10 * * * * /path/to/script.sh # 每 10 分钟执行
0 2 1 * * /path/to/script.sh # 每月 1 号凌晨 2 点执行
# 常用示例:每天备份数据库
0 3 * * * mysqldump -u root mydb > /backup/db_$(date +\%Y\%m\%d).sql
10.2 Systemd Timer
# 创建定时器
sudo nano /etc/systemd/system/backup.timer
# [Unit]
# Description=Daily Backup Timer
#
# [Timer]
# OnCalendar=daily
# Persistent=true
#
# [Install]
# WantedBy=timers.target
sudo systemctl enable --now backup.timer # 启用并启动
systemctl list-timers # 查看所有定时器
十一、环境变量与 Shell 配置
# 查看环境变量
env # 查看所有环境变量
echo $PATH # 查看 PATH
echo $HOME # 查看主目录
set # 查看所有变量(含函数)
# 设置环境变量
export MY_VAR="hello" # 设置当前会话变量
export PATH="$HOME/bin:$PATH" # 添加到 PATH
echo 'export MY_VAR="hello"' >> ~/.bashrc # 持久化设置
source ~/.bashrc # 立即生效
# 别名设置
alias ll='ls -alh' # 创建临时别名
alias cls='clear'
echo "alias ll='ls -alh'" >> ~/.bashrc # 持久化
# Shell 配置
nano ~/.bashrc # Bash 配置
nano ~/.bash_aliases # Bash 别名配置
nano ~/.profile # 登录 Shell 配置
nano ~/.inputrc # 命令行编辑配置
十二、实用工具与技巧
12.1 历史命令
history # 查看命令历史
history | grep "keyword" # 搜索历史命令
!n # 执行第 n 条历史命令
!! # 重复上一条命令
!$ # 上一条命令的最后一个参数
Ctrl+R # 交互式搜索历史命令
12.2 管道与重定向
# 管道
cat file.txt | grep "keyword" | sort # 多管道组合
# 重定向
command > file.txt # 覆盖写入
command >> file.txt # 追加写入
command < file.txt # 从文件读取输入
command 2> error.log # 重定向错误输出
command > output.log 2>&1 # 重定向标准和错误到同一文件
command &> all.log # 同上(Bash 简写)
command > /dev/null 2>&1 # 丢弃所有输出
# Tee - 同时输出到屏幕和文件
command | tee output.log
12.3 快捷键
Ctrl + C # 终止当前命令
Ctrl + Z # 暂停当前命令(可用 fg 恢复)
Ctrl + D # 退出当前 Shell/结束输入
Ctrl + L # 清屏(等同于 clear)
Ctrl + A # 跳到行首
Ctrl + E # 跳到行尾
Ctrl + U # 删除光标前所有内容
Ctrl + K # 删除光标后所有内容
Ctrl + W # 删除光标前的一个词
Ctrl + R # 搜索历史命令
Tab # 自动补全
Tab + Tab # 显示所有补全选项
12.4 后台任务
command & # 后台运行命令
jobs # 查看后台任务
fg %1 # 将后台任务 1 提到前台
bg %1 # 将暂停的任务 1 放到后台
nohup command & # 退出终端后继续运行
nohup command > output.log 2>&1 &
disown # 从当前 Shell 移除任务关联
12.5 其他实用工具
# 时间同步
timedatectl # 查看时间与时区设置
timedatectl set-timezone Asia/Shanghai # 设置时区
sudo ntpdate ntp.ubuntu.com # 手动同步时间
# 防火墙
sudo ufw status # 查看防火墙状态
sudo ufw enable # 启用防火墙
sudo ufw allow 22/tcp # 允许 SSH
sudo ufw allow 80/tcp # 允许 HTTP
sudo ufw allow 443/tcp # 允许 HTTPS
sudo ufw deny from 192.168.1.100 # 阻止特定 IP
sudo ufw delete allow 80/tcp # 删除规则
# 系统更新通知
sudo apt install unattended-upgrades # 自动安全更新
sudo dpkg-reconfigure unattended-upgrades
# 性能基准
time command # 测量命令执行时间
sudo hdparm -tT /dev/sda # 磁盘读写速度测试
结语
以上指令覆盖了 Linux 日常使用中最高频的场景。建议初学者先掌握第一部分的文件管理和第四部分的软件包管理,再逐步学习其他分类的内容。
学习建议:
- 善用
man命令查看手册页,例如man ls、man grep - 不确定命令效果时,先用
--help参数快速了解用法 - 在虚拟机或 Docker 容器中练习,避免对生产环境造成意外影响
- 常用指令用多了自然就记住了,不必死记硬背
参考链接:
- GNU Coreutils 手册:https://www.gnu.org/software/coreutils/manual/
- Linux 文档计划(TLDP):https://tldp.org/
- Arch Linux Wiki:https://wiki.archlinux.org/

浙公网安备 33010602011771号