
精通 Linux:开发者必备的 50 个核心命令行工具
在图形界面日益强大的今天,为什么我们仍需精通命令行?因为在云服务器、Docker 容器和自动化脚本的世界里,命令行是与系统交互最直接、最高效的语言。无论是服务部署、故障排查,还是性能监控,命令行都是开发者不可或缺的核心技能。
本文为你精选了 50 个在开发与运维工作中频繁使用的 Linux 命令。我们摒弃了晦涩的参数列表,聚焦于最实用的场景和用法,希望能成为你日常工作中的得力助手。
文件与目录操作:构建工作区的基础
这是每个 Linux 用户的起点,用于在文件系统中导航和组织文件。
ls- 列出目录内容ls -l: 以长列表格式显示,包含权限、所有者、大小、修改日期等详细信息。ls -a: 显示所有文件,包括以.开头的隐藏文件。ls -lh: 结合-l和-h(human-readable),以更易读的单位(如 KB, MB)显示文件大小。
cd- 切换目录cd /var/log: 进入指定目录。cd ..: 返回上一级目录。cd ~或cd: 返回当前用户的主目录。
pwd- 显示当前工作目录的绝对路径。mkdir- 创建新目录mkdir myapp: 创建一个名为myapp的目录。mkdir -p myapp/logs:-p参数可以递归创建多层目录。
touch- 创建空文件或更新文件时间戳。touch config.js: 如果文件不存在,则创建一个空的config.js文件。
cp- 复制文件或目录cp source.txt destination.txt: 复制文件。cp -r src_dir/ dest_dir/:-r参数用于递归复制整个目录。
mv- 移动或重命名文件/目录。mv old_name.txt new_name.txt: 重命名文件。mv my_file.txt /tmp/: 将文件移动到/tmp目录。
rm- 删除文件或目录rm file.txt: 删除文件。rm -r old_dir:-r参数用于递归删除目录。rm -rf data/:-f(force) 参数将强制删除,无提示。此命令极其危险,使用前请再三确认路径。
文本查看与搜索:洞察文件内容
日志分析、配置检查都离不开对文本内容的操作。
cat- 查看文件全部内容(适用于小文件)。less- 分页查看文件内容(适用于大文件),支持上下滚动和搜索。head/tail- 查看文件的开头/结尾部分。head -n 20 app.log: 查看日志文件的前 20 行。tail -n 20 app.log: 查看日志文件的末尾 20 行。tail -f app.log:-f(follow) 参数可以实时跟踪文件的新增内容,是查看实时日志的神器。
grep- 在文本中搜索匹配的行。grep "error" /var/log/syslog: 在syslog文件中搜索包含 "error" 的行。grep -i "error" app.log:-i参数表示忽略大小写。grep -r "API_KEY" .:-r参数表示在当前目录下递归搜索。
find- 在文件系统中查找文件。find /etc -name "*.conf": 在/etc目录下查找所有以.conf结尾的文件。find . -type f -mtime -7: 查找当前目录下 7 天内修改过的文件。
进程管理:掌控系统运行状态
当服务变慢或无响应时,你需要这些命令来诊断问题。
ps- 显示当前用户的活动进程。ps aux: 显示系统中所有用户的全部进程,信息非常详细。通常与grep结合使用。ps aux | grep nginx: 查找与nginx相关的所有进程。
top/htop- 实时显示系统进程动态。top: 经典的进程监视器,显示 CPU、内存占用率等。htop:top的增强版,提供更友好的交互界面和更丰富的功能(可能需要单独安装)。
kill- 终止进程。kill 12345: 向进程 ID 为12345的进程发送终止信号(SIGTERM),让其优雅退出。kill -9 12345: 向进程发送强制杀死信号(SIGKILL)。这是一种最后的手段,因为它不会给进程清理资源的机会。
权限与用户管理:保障系统安全
正确配置权限是系统安全的第一道防线。
chmod- 修改文件或目录的权限。chmod +x deploy.sh: 为deploy.sh脚本添加可执行权限。chmod 644 config.yaml: 将文件权限设置为rw-r--r--(所有者读写,组用户和其他用户只读)。
chown- 更改文件或目录的所有者和所属组。chown www-data:www-data /var/www/html: 将目录所有权赋予www-data用户和组。
sudo- 以超级用户(root)权限执行命令。
网络诊断与连接:确保服务联通
ping- 测试与目标主机的网络连通性。ping google.com
curl-强大的 URL 传输工具,可用于 API 测试、文件下载等。curl https://api.github.com
ssh- 安全地远程登录到另一台主机。ssh user@your-server-ip
scp- 在本地和远程主机之间安全地复制文件。scp local_file.txt user@remote_host:/remote/path/
ip/ifconfig- 查看和管理网络接口。ip a或ifconfig: 显示所有网络接口的 IP 地址和状态(ip是更现代的命令)。
netstat/ss- 显示网络连接、路由表、接口统计等信息。ss -tuln: 显示所有正在监听的 TCP 和 UDP 端口(ss是netstat的现代替代品,速度更快)。
系统信息与性能监控
df- 查看磁盘空间使用情况。df -h: 以人类可读的格式显示。
du- 估算文件和目录的磁盘使用空间。du -sh /var/log:-s(summary) 统计总大小,-h(human-readable) 易读格式。
uptime- 显示系统已运行时间、登录用户数和平均负载。uname- 显示系统内核和操作系统信息。uname -a: 显示所有可用信息。
free- 显示系统内存使用情况。free -h: 以易读格式显示。
归档与压缩
tar- 打包和解包.tar文件,通常与压缩结合。tar -czvf archive.tar.gz /path/to/dir: 将目录打包并用gzip压缩。tar -xzvf archive.tar.gz: 解压并解包。
zip/unzip- 创建和解压.zip文件。
Shell 高级技巧与数据流处理
这些命令通常通过管道符 | 串联起来,构建强大的数据处理流水线。
history- 查看历史执行过的命令。alias- 为长命令创建别名。alias ll='ls -lAh'
export/env- 管理环境变量。export DATABASE_URL="user:pass@host/db": 设置环境变量。env | grep 'PATH': 查看包含'PATH'的环境变量。
awk- 强大的文本行处理工具,擅长按列处理数据。awk '{print $1, $7}' access.log: 打印 Nginx 日志的第一列(IP)和第七列(URL)。
sed- 流编辑器,用于对文本进行替换、删除等操作。sed -i 's/old-text/new-text/g' file.txt: 在文件中直接替换文本。
cut- 按列剪切文本。cut -d':' -f1 /etc/passwd: 以冒号为分隔符,提取/etc/passwd文件的第一列(用户名)。
sort- 对文本行进行排序。uniq- 报告或省略重复的行。uniq -c: 统计每行出现的次数。
组合使用示例:统计访问日志中访问量最高的 10 个 IP。
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10总结
掌握这些命令,并非要你成为一个命令行“大师”,而是为了在遇到问题时,能有清晰的思路和趁手的工具去分析和解决。命令行是赋予开发者精确控制系统能力的强大工具。