Skip to content

014.webp

精通 Linux:开发者必备的 50 个核心命令行工具

在图形界面日益强大的今天,为什么我们仍需精通命令行?因为在云服务器、Docker 容器和自动化脚本的世界里,命令行是与系统交互最直接、最高效的语言。无论是服务部署、故障排查,还是性能监控,命令行都是开发者不可或缺的核心技能。

本文为你精选了 50 个在开发与运维工作中频繁使用的 Linux 命令。我们摒弃了晦涩的参数列表,聚焦于最实用的场景和用法,希望能成为你日常工作中的得力助手。

文件与目录操作:构建工作区的基础

这是每个 Linux 用户的起点,用于在文件系统中导航和组织文件。

  1. ls - 列出目录内容

    • ls -l: 以长列表格式显示,包含权限、所有者、大小、修改日期等详细信息。
    • ls -a: 显示所有文件,包括以 . 开头的隐藏文件。
    • ls -lh: 结合 -l-h (human-readable),以更易读的单位(如 KB, MB)显示文件大小。
  2. cd - 切换目录

    • cd /var/log: 进入指定目录。
    • cd ..: 返回上一级目录。
    • cd ~cd: 返回当前用户的主目录。
  3. pwd - 显示当前工作目录的绝对路径。

  4. mkdir - 创建新目录

    • mkdir myapp: 创建一个名为 myapp 的目录。
    • mkdir -p myapp/logs: -p 参数可以递归创建多层目录。
  5. touch - 创建空文件或更新文件时间戳。

    • touch config.js: 如果文件不存在,则创建一个空的 config.js 文件。
  6. cp - 复制文件或目录

    • cp source.txt destination.txt: 复制文件。
    • cp -r src_dir/ dest_dir/: -r 参数用于递归复制整个目录。
  7. mv - 移动或重命名文件/目录。

    • mv old_name.txt new_name.txt: 重命名文件。
    • mv my_file.txt /tmp/: 将文件移动到 /tmp 目录。
  8. rm - 删除文件或目录

    • rm file.txt: 删除文件。
    • rm -r old_dir: -r 参数用于递归删除目录。
    • rm -rf data/: -f (force) 参数将强制删除,无提示。此命令极其危险,使用前请再三确认路径。

文本查看与搜索:洞察文件内容

日志分析、配置检查都离不开对文本内容的操作。

  1. cat - 查看文件全部内容(适用于小文件)。

  2. less - 分页查看文件内容(适用于大文件),支持上下滚动和搜索。

  3. head / tail - 查看文件的开头/结尾部分。

    • head -n 20 app.log: 查看日志文件的前 20 行。
    • tail -n 20 app.log: 查看日志文件的末尾 20 行。
    • tail -f app.log: -f (follow) 参数可以实时跟踪文件的新增内容,是查看实时日志的神器。
  4. grep - 在文本中搜索匹配的行。

    • grep "error" /var/log/syslog: 在 syslog 文件中搜索包含 "error" 的行。
    • grep -i "error" app.log: -i 参数表示忽略大小写。
    • grep -r "API_KEY" .: -r 参数表示在当前目录下递归搜索。
  5. find - 在文件系统中查找文件。

    • find /etc -name "*.conf": 在 /etc 目录下查找所有以 .conf 结尾的文件。
    • find . -type f -mtime -7: 查找当前目录下 7 天内修改过的文件。

进程管理:掌控系统运行状态

当服务变慢或无响应时,你需要这些命令来诊断问题。

  1. ps - 显示当前用户的活动进程。

    • ps aux: 显示系统中所有用户的全部进程,信息非常详细。通常与 grep 结合使用。
    • ps aux | grep nginx: 查找与 nginx 相关的所有进程。
  2. top / htop - 实时显示系统进程动态。

    • top: 经典的进程监视器,显示 CPU、内存占用率等。
    • htop: top 的增强版,提供更友好的交互界面和更丰富的功能(可能需要单独安装)。
  3. kill - 终止进程。

    • kill 12345: 向进程 ID 为 12345 的进程发送终止信号(SIGTERM),让其优雅退出。
    • kill -9 12345: 向进程发送强制杀死信号(SIGKILL)。这是一种最后的手段,因为它不会给进程清理资源的机会。

权限与用户管理:保障系统安全

正确配置权限是系统安全的第一道防线。

  1. chmod - 修改文件或目录的权限。

    • chmod +x deploy.sh: 为 deploy.sh 脚本添加可执行权限。
    • chmod 644 config.yaml: 将文件权限设置为 rw-r--r--(所有者读写,组用户和其他用户只读)。
  2. chown - 更改文件或目录的所有者和所属组。

    • chown www-data:www-data /var/www/html: 将目录所有权赋予 www-data 用户和组。
  3. sudo - 以超级用户(root)权限执行命令。

网络诊断与连接:确保服务联通

  1. ping - 测试与目标主机的网络连通性。

    • ping google.com
  2. curl -强大的 URL 传输工具,可用于 API 测试、文件下载等。

    • curl https://api.github.com
  3. ssh - 安全地远程登录到另一台主机。

    • ssh user@your-server-ip
  4. scp - 在本地和远程主机之间安全地复制文件。

    • scp local_file.txt user@remote_host:/remote/path/
  5. ip / ifconfig - 查看和管理网络接口。

    • ip aifconfig: 显示所有网络接口的 IP 地址和状态(ip 是更现代的命令)。
  6. netstat / ss - 显示网络连接、路由表、接口统计等信息。

    • ss -tuln: 显示所有正在监听的 TCP 和 UDP 端口(ssnetstat 的现代替代品,速度更快)。

系统信息与性能监控

  1. df - 查看磁盘空间使用情况。

    • df -h: 以人类可读的格式显示。
  2. du - 估算文件和目录的磁盘使用空间。

    • du -sh /var/log: -s (summary) 统计总大小,-h (human-readable) 易读格式。
  3. uptime - 显示系统已运行时间、登录用户数和平均负载。

  4. uname - 显示系统内核和操作系统信息。

    • uname -a: 显示所有可用信息。
  5. free - 显示系统内存使用情况。

    • free -h: 以易读格式显示。

归档与压缩

  1. tar - 打包和解包 .tar 文件,通常与压缩结合。

    • tar -czvf archive.tar.gz /path/to/dir: 将目录打包并用 gzip 压缩。
    • tar -xzvf archive.tar.gz: 解压并解包。
  2. zip / unzip - 创建和解压 .zip 文件。

Shell 高级技巧与数据流处理

这些命令通常通过管道符 | 串联起来,构建强大的数据处理流水线。

  1. history - 查看历史执行过的命令。

  2. alias - 为长命令创建别名。

    • alias ll='ls -lAh'
  3. export / env - 管理环境变量。

    • export DATABASE_URL="user:pass@host/db": 设置环境变量。
    • env | grep 'PATH': 查看包含'PATH'的环境变量。
  4. awk - 强大的文本行处理工具,擅长按列处理数据。

    • awk '{print $1, $7}' access.log: 打印 Nginx 日志的第一列(IP)和第七列(URL)。
  5. sed - 流编辑器,用于对文本进行替换、删除等操作。

    • sed -i 's/old-text/new-text/g' file.txt: 在文件中直接替换文本。
  6. cut - 按列剪切文本。

    • cut -d':' -f1 /etc/passwd: 以冒号为分隔符,提取 /etc/passwd 文件的第一列(用户名)。
  7. sort - 对文本行进行排序。

  8. uniq - 报告或省略重复的行。

    • uniq -c: 统计每行出现的次数。

组合使用示例:统计访问日志中访问量最高的 10 个 IP。

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

总结

掌握这些命令,并非要你成为一个命令行“大师”,而是为了在遇到问题时,能有清晰的思路和趁手的工具去分析和解决。命令行是赋予开发者精确控制系统能力的强大工具。

累计访问