Linux 作为一款功能强大的操作系统,其命令行工具是提升效率的核心,掌握一些好用的命令,能让日常工作事半功倍,以下从文件管理、系统监控、文本处理、网络工具等维度,详细介绍一些实用且高效的 Linux 命令。

在文件管理方面,ls 是最基础的命令,但配合选项后威力大增。ls -la 可以显示文件的详细信息,包括权限、所有者、大小和修改时间;ls -lh 会以人类可读的格式显示文件大小(如 KB、MB);ls -R 则能递归显示目录下的所有子目录和文件。tree 命令以树状结构展示目录层级,比 ls -R 更直观,若未安装可通过 sudo apt install tree(Debian/Ubuntu)或 sudo yum install tree(CentOS/RHEL)安装。cp 和 mv 命令默认不会覆盖已存在文件,若需强制覆盖可加 -f 选项;mv 除了移动文件,还可用于重命名。rm 命令删除文件时需谨慎,rm -rf 会递归强制删除目录,一旦执行无法恢复,建议先使用 ls 确认目录内容。find 命令是查找文件的利器,find /home -name "*.txt" 可在 /home 目录下查找所有 .txt 文件,find . -type f -size +10M 则能查找当前目录下大于 10MB 的文件。du 命令用于查看目录大小,du -sh * 会显示当前目录下每个子目录和文件的总体大小,-s 表示汇总,-h 以人类可读格式显示。
系统监控类命令能帮助实时掌握系统状态。top 和 htop 是动态查看进程和系统资源的工具,htop 比 top 界面更友好,支持彩色显示和鼠标操作,可通过 sudo apt install htop 安装。ps 命令查看当前进程,ps aux 显示所有进程的详细信息,grep 结合使用可筛选特定进程,如 ps aux | grep nginx。free 命令查看内存使用情况,free -h 以人类可读格式显示。df 命令用于查看磁盘空间,df -h 显示各分区的使用量,du -sh /* 则可快速查看根目录下各文件夹的大小占用。netstat 和 ss 用于查看网络连接状态,ss -tulnp 比 netstat -tuln 更高效,能显示监听的端口和对应进程。vmstat 命令报告虚拟内存、进程、I/O 等系统整体状态,vmstat 1 每秒刷新一次数据,便于观察系统动态。
文本处理是 Linux 命令的强项,grep 是其中的核心工具,用于文本搜索。grep "error" log.txt 在 log.txt 中搜索包含 "error" 的行,grep -v "warning" log.txt 则排除包含 "warning" 的行,grep -i "ERROR" log.txt 忽略大小写搜索。sed 是流编辑器,用于文本替换和编辑,sed 's/old/new/g' file.txt 将文件中所有 "old" 替换为 "new",sed -i 's/old/new/g' file.txt 直接修改原文件。awk 是强大的文本分析工具,awk '{print $1, $3}' file.txt 打印每行的第 1 和第 3 列,awk -F: '{print $1}' /etc/passwd 以冒号为分隔符,打印 /etc/passwd 的用户名列。cat 命令用于查看文件内容,cat -n file.txt 显示行号,tac 则反向显示文件内容。less 和 more 用于分页查看大文件,less 支持上下翻页和搜索,more 相对简单,按空格键翻页。sort 对文件内容排序,sort -n file.txt 按数字排序,sort -k 2,2 file.txt 按第 2 列排序。uniq 用于去除重复行,需配合 sort 使用,如 sort file.txt | uniq。wc 统计文件行数、单词数和字节数,wc -l file.txt 统计行数,wc -w file.txt 统计单词数。
网络工具类命令在排查网络问题时非常实用。ping 测试网络连通性,ping -c 4 baidu.com 发送 4 个数据包后停止。curl 和 wget 用于下载文件,curl -O http://example.com/file.zip 下载文件并保持原名,wget -c http://example.com/file.zip 支持断点续传。ssh 用于远程登录服务器,ssh user@192.168.1.100 以用户名 user 登录 IP 为 168.1.100 的服务器,ssh -p 2222 user@host 指定非默认端口 2222。scp 用于安全复制文件,scp local.txt user@remote:/home/user/ 将本地文件复制到远程服务器,scp -r /local/dir user@remote:/remote/dir 复制整个目录。traceroute 和 mtr 用于跟踪网络路由,traceroute baidu.com 显示数据包经过的路由节点,mtr baidu.com 将 ping 和 traceroute 结合,提供更详细的网络延迟和丢包信息。nmap 用于端口扫描,nmap -sS 192.168.1.1 扫描目标主机的开放端口,nmap -O 192.168.1.1 尝试识别目标主机的操作系统。

除了上述命令,还有一些实用工具能提升操作效率。alias 用于设置命令别名,如 alias ll='ls -la',将 ll 定义为 ls -la 的别名,避免每次输入长命令。history 查看命令历史,!n 执行历史中第 n 条命令, 执行上一条命令。tar 用于文件打包和解压,tar -czvf archive.tar.gz /path/to/dir 将目录打包并 gzip 压缩,tar -xzvf archive.tar.gz 解压 gzip 压缩的包。chmod 修改文件权限,chmod 755 file.txt 设置文件所有者可读写执行,其他用户可读执行。chown 修改文件所有者,chown user:group file.txt 将文件所有者改为 user,所属组改为 group。nohup 让命令在后台运行且忽略挂断信号,nohup command & 常用于运行长时间任务。watch 监控命令执行结果,watch -n 1 "df -h" 每秒执行一次 df -h 并显示结果。
以下是一些常用命令的快速参考:
| 命令类别 | 命令 | 常用选项 | 功能描述 |
|---|---|---|---|
| 文件管理 | ls | -la, -lh, -R | 列出目录内容 |
| find | -name, -type, -size | 查找文件 | |
| cp | -f, -r | 复制文件/目录 | |
| mv | -f | 移动/重命名文件 | |
| rm | -f, -r | 删除文件/目录 | |
| 系统监控 | top | -d, -p | 动态查看进程 |
| htop | -u, -p | 增强版 top | |
| ps | aux, -ef | 查看进程 | |
| df | -h | 查看磁盘空间 | |
| free | -h | 查看内存使用 | |
| 文本处理 | grep | -i, -v, -n | 文本搜索 |
| sed | 's/old/new/g', -i | 流编辑器 | |
| awk | -F, '{print $N}' | 文本分析 | |
| sort | -n, -k | 排序 | |
| wc | -l, -w, -c | 统计行/词/字节数 | |
| 网络工具 | ping | -c | 测试网络连通性 |
| curl | -O, -L | 下载文件 | |
| ssh | -p, -i | 远程登录 | |
| scp | -r, -P | 复制文件 | |
| traceroute | -n | 跟踪路由 |
掌握这些命令后,Linux 的操作效率会显著提升,建议结合实际场景多加练习,逐步熟悉命令的用法和参数,才能灵活运用解决各种问题。
相关问答 FAQs
Q1:如何快速查找大文件并清理磁盘空间?
A:可以使用 find 命令查找大文件,find / -type f -size +100M -exec ls -lh {} \; 查找系统中大于 100MB 的文件并显示详细信息,定位到占用空间大的文件或目录后,使用 rm 删除不需要的文件,或 du -sh /* 查看根目录下各文件夹大小,针对性清理,清理前建议先备份重要数据,避免误删。
Q2:如何查看某个进程占用的端口和网络连接?
A:首先使用 ps aux | grep <进程名> 查找进程 ID(PID),然后通过 netstat -tulnp | grep <PID> 或 ss -tulnp | grep <PID> 查看该进程占用的端口和网络连接状态,若要查看 Nginx 进程的端口占用,可执行 ps aux | grep nginx 获取 PID 后,再用 netstat -tulnp | grep <PID> 查看详细信息。
