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 lsman grep
  • 不确定命令效果时,先用 --help 参数快速了解用法
  • 在虚拟机或 Docker 容器中练习,避免对生产环境造成意外影响
  • 常用指令用多了自然就记住了,不必死记硬背

参考链接:

posted @ 2026-06-22 10:18  LinLinGOGO  阅读(66)  评论(0)    收藏  举报