Linux 常用命令完全指南

小飞兽 Linux 421 次阅读 2026-05-29

概述

Linux 命令行是运维和开发中最强大的工具之一。掌握常用命令不仅能提升日常操作效率,还能在服务器管理、自动化脚本编写、问题排查等场景中发挥关键作用。本文系统梳理 Linux 中最常用的命令,涵盖文件操作、进程管理、网络诊断、文本处理等核心领域,配以实际示例,帮助你建立完整的命令行技能体系。

基础语法

Linux 命令遵循通用的语法结构:命令名 [选项] [参数]。选项通常以 - 开头(全写如 --help 或单写如 -a),参数是命令的操作对象。管道符 | 将前一个命令的输出作为后一个命令的输入,重定向符 > 和 >> 分别用于覆盖和追加写入文件。

    • ls:列出目录内容,-l 详细信息,-a 显示隐藏文件,-h 人性化大小。
    • cd:切换目录,~ 表示家目录,.. 表示上级目录,- 表示上一个目录。
    • cp/mv/rm:复制、移动(重命名)、删除文件,rm -rf 递归强制删除目录。
    • grep/find/awk/sed:文本搜索和处理的瑞士军刀。
    • chmod/chown:修改文件权限和所有者。

    善用 man 命令查看任何命令的完整手册,例如 man ls 会显示 ls 的所有选项说明。

    完整代码示例+注释

    # === 文件和目录操作 ===
    ls -lah /var/log              # 列出日志目录详情(包含隐藏文件)
    cd ~                           # 切换到家目录
    pwd                            # 显示当前工作目录完整路径
    

    复制目录(保留权限、时间戳等属性)

    cp -a /home/user/data /backup/ # -a = -dR --preserve=all

    查找文件(按名称、大小、时间)

    find /var -name "*.log" -size +100M # 查找大于100MB的日志文件 find . -type f -mtime -7 # 查找7天内修改过的文件 find /tmp -name "*.tmp" -exec rm {} \; # 查找并删除 tmp 文件

    === 文本处理三剑客:grep/find/awk/sed ===

    grep:搜索包含关键词的行

    grep -rn "error" /var/log/ --include="*.log" # 递归搜索所有日志文件 grep -E "warn|error|critical" app.log # 支持正则,匹配多个关键词

    awk:强大的文本分析工具

    打印第1、3、4列(默认以空格分隔)

    ls -l | awk '{print $1, $3, $9}'

    打印文件内容并添加行号

    awk '{print NR ": " $0}' data.txt

    过滤并统计:统计每个IP的访问次数

    awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

    sed:流编辑器,替换文本

    sed -i 's/old_string/new_string/g' file.txt # 全局替换(-i 直接修改文件) sed -n '10,20p' file.txt # 打印第10-20行 sed '/^#/d' config.conf # 删除所有注释行

    === 进程和系统监控 ===

    ps aux | grep nginx # 查看 nginx 进程详情 top -Hp 1234 # 查看 PID 1234 的线程 htop # 交互式进程查看(比 top 更直观)

    查看资源占用最高的进程

    ps aux --sort=-%mem | head -11 # 按内存排序(前10) ps aux --sort=-%cpu | head -11 # 按 CPU 排序(前10)

    kill 信号控制进程

    kill -SIGTERM 5678 # 优雅终止进程(推荐优先使用) kill -SIGKILL 5678 # 强制杀死进程(不得已才用) killall -SIGTERM nginx # 按名称杀死所有 nginx 进程

    === 网络诊断 ===

    netstat -tlnp | grep :80 # 查看端口 80 的监听情况 ss -tlnp | grep :80 # ss 比 netstat 更快(现代替代工具) curl -I https://example.com # 检查 HTTP 响应头 wget -r -l 2 https://example.com # 递归下载网站(限制深度2)

    端口扫描(需要 nmap)

    nmap -sV 192.168.1.1 -p 1-1000 # 扫描 IP 的端口范围

    === 磁盘和文件大小 ===

    df -h # 查看各分区使用情况 du -sh * | sort -h # 查看当前目录各子目录大小(人性化显示) ncdu # 交互式磁盘使用分析工具

    === 系统信息 ===

    uname -a # 内核版本、系统架构 uptime # 系统运行时间和负载 free -h # 内存使用情况 cat /proc/cpuinfo | grep "model name" | head -1 # CPU 型号

    === 管道组合示例 ===

    找出最占空间的日志文件并排序

    find /var/log -name "*.log" -exec du -h {} \; | sort -h | tail -5

    统计 nginx 访问日志中各 HTTP 状态码的数量

    cat access.log | awk '{print $9}' | sort | uniq -c | sort -rn

    实时监控日志中包含 error 的新行

    tail -f /var/log/app.log | grep --line-buffered error

    运行效果

    执行 ls -lah /var/log 会显示日志目录下所有文件的详细信息,包括文件权限、所有者、大小、修改时间,以及以 . 开头的隐藏文件。find 命令配合 -size +100M 可以快速定位磁盘清理的目标文件。awk 的统计示例能够从访问日志中提取 IP 并计算每个 IP 的访问次数。

    tail -f 实时监控是排查生产环境问题的利器,配合 grep 可以只关注感兴趣的日志行。ncdu 启动后会以交互式界面展示目录大小分布,按键盘方向键可以深入查看子目录,用 q 退出,非常适合在远程服务器上快速分析磁盘占用。

    常见问题

    Q1:rm -rf / 真的会删除整个系统吗
    现代 Linux 系统中,root 用户执行 rm -rf / 在较新版本的 rm 工具上会被明确拒绝并报错。早期版本确实可能造成灾难性后果。无论如何,在使用 rm -rf 时务必确认目标路径无误,建议先用 ls 检查确认后再执行删除操作。对于重要目录,建议使用 trash 命令(将文件移入回收站)替代直接删除。

    Q2:管道和重定向的区别
    管道 | 将前一个命令的标准输出连接到下一个命令的标准输入,两个命令同时执行。重定向 > 或 >> 将命令输出写入文件,> 会覆盖原文件,>> 追加到文件末尾。stderr 默认不会通过管道传递,可以用 2>&1 将 stderr 合并到 stdout。

    Q3:如何让命令在后台运行且不受终端关闭影响
    在命令后加 & 可以后台运行(nohup command &),但更推荐使用 screen 或 tmux 创建持久会话,这样即使 SSH 断开也能重新连接恢复。nohup 只保证进程不接收 SIGHUP 信号,但不提供会话恢复能力。

    Q4:如何批量重命名文件
    可以用 rename 命令(perl 版本功能强大):rename 's/old_prefix/new_prefix/' *.txt 将所有 txt 文件的 old_prefix 替换为 new_prefix。或者用 mmv 命令:mmv "*.txt" "#1_new.txt" 实现批量加前缀。更复杂的可以用 Python 脚本处理。

    延伸阅读

    • explainshell.com:输入任意命令即可获得每个部分的详细解释,非常适合学习新命令。
    • 《Linux高性能服务器编程》游渼源:深入讲解 Linux 网络编程和服务器性能优化。
  • tldr pages:社区维护的简化版命令帮助,用实际例子替代完整手册,适合快速查阅。