今天整理了80个高频核心用法,全场景覆盖,可直接抄作业,新手老手都建议收藏。
不管你是刚入门的编程新手,还是日常和服务器打交道的资深开发、运维,这篇内容都能帮你彻底告别“用一次搜一次”的低效困境。
本文覆盖文件操作、权限管理、进程监控、网络排查、文本处理五大核心场景,每个命令都附实操语法、常用示例和专属避坑提醒,不用死记硬背,随用随查。
一、文件与目录操作(25个,新手必学,日常最高频)
这是Linux最基础的核心能力,覆盖90%的日常文件处理需求,新手优先吃透。
1. **ls**:列出目录内容
常用语法:`ls [参数] [路径]`
高频示例:`ls -lht` 列出文件详细信息,按大小排序,人性化显示单位
避坑提醒:`ls -a` 会显示隐藏文件,排查配置文件时必用
2. **cd**:切换工作目录
高频示例:`cd /` 切换到根目录;`cd ..` 返回上一级;`cd ~` 回到用户家目录
避坑提醒:路径前加`/`为绝对路径,不加为相对路径,避免切换目录出错
3. **pwd**:显示当前工作目录的绝对路径
高频示例:直接执行`pwd`,快速确认当前所在位置,避免操作错目录
4. **mkdir**:创建目录
高频示例:`mkdir -p test/a/b` 递归创建多级目录,无需逐层创建
避坑提醒:不加`-p`无法创建多级目录,会直接报错
5. **rm**:删除文件或目录
高频示例:`rm -rf test` 强制递归删除目录及所有内容
⚠️ 致命避坑:绝对禁止执行`rm -rf /` 或带根路径的模糊匹配,会直接清空系统文件
6. **cp**:复制文件或目录
高频示例:`cp -r 源目录 目标目录` 递归复制目录及所有子文件
避坑提醒:复制目录必须加`-r`,否则会报错;同名文件会直接覆盖,建议加`-i`开启确认
7. **mv**:移动/重命名文件或目录
高频示例:`mv 旧文件名 新文件名` 重命名;`mv 文件 目标路径` 移动文件
避坑提醒:目标路径已存在同名文件会直接覆盖,谨慎操作
8. **touch**:创建空文件/修改文件时间戳
高频示例:`touch test.txt` 快速创建空文件,无需打开编辑器
9. **cat**:查看文件全部内容
高频示例:`cat test.txt` 查看文件内容;`cat -n test.txt` 显示行号
避坑提醒:只适合查看小文件,大文件会直接刷屏,建议用less
10. **more/less**:分页查看大文件内容
高频示例:`less test.log` 分页查看日志,支持上下翻页、关键词搜索
核心优势:less比more更灵活,支持向前翻页,是查看大日志的首选
11. **head/tail**:查看文件开头/结尾内容
高频示例:`head -20 test.txt` 查看前20行;`tail -f test.log` 实时滚动查看日志
避坑提醒:`tail -f` 是排查线上服务日志的核心命令,`Ctrl+C` 可退出
12. **find**:文件搜索(精准查找)
高频示例:`find /home -name "*.txt"` 在/home目录下查找所有.txt后缀的文件
进阶用法:`find . -type f -size +100M` 查找当前目录下大于100M的文件
13. **locate**:快速文件搜索
高频示例:`locate test.txt` 全局快速查找文件,比find速度更快
避坑提醒:需先执行`updatedb`更新数据库,否则找不到新建的文件
14. **which**:查找命令的可执行文件路径
高频示例:`which java` 查找java命令的安装路径,排查环境变量问题必备
15. **whereis**:查找命令的二进制、源码和帮助文档路径
高频示例:`whereis nginx` 全面查找nginx相关文件,比which覆盖范围更广
16. **file**:查看文件类型
高频示例:`file test.txt` 确认文件真实类型,避免后缀名造假导致的操作错误
17. **du**:查看文件/目录占用磁盘空间大小
高频示例:`du -sh *` 查看当前目录下所有文件/文件夹的大小,人性化显示
避坑提醒:`-s` 只显示总计,`-h` 人性化单位,不加参数会递归列出所有子文件大小
18. **df**:查看磁盘分区使用情况
高频示例:`df -h` 查看所有磁盘分区的使用率、剩余空间,线上磁盘满排查必备
19. **ln**:创建链接文件
高频示例:`ln -s 源文件 软链接文件` 创建软链接(相当于Windows快捷方式)
避坑提醒:软链接源文件删除后会失效,硬链接则不受影响,优先用软链接
20. **tar**:打包/解压tar包
高频示例:
打包:`tar -zcvf test.tar.gz 目标文件/目录`
解压:`tar -zxvf test.tar.gz -C 目标路径`
避坑提醒:`-z` 对应.gz格式,`-j` 对应.bz2格式,参数顺序错误会导致解压失败
21. **zip/unzip**:压缩/解压zip包
高频示例:`zip -r test.zip 目标目录` 递归压缩;`unzip test.zip -d 目标路径` 解压到指定目录
22. **chattr**:修改文件隐藏属性
高频示例:`chattr +i test.txt` 锁定文件,禁止修改、删除,即使root用户也无法操作
避坑提醒:排查文件无法修改时,先看是否加了i属性,用`lsattr`查看隐藏属性
23. **rename**:批量重命名文件
高频示例:`rename 's/.txt/.md/' *.txt` 批量将当前目录下所有.txt文件改为.md后缀
24. **wc**:统计文件行数、单词数、字节数
高频示例:`wc -l test.txt` 统计文件行数,排查日志条数、代码行数必备
25. **tree**:以树形结构显示目录结构
高频示例:`tree -L 2` 显示2级目录树形结构,快速梳理项目目录层级
避坑提醒:最小化系统默认未安装,需执行`yum install tree`或`apt install tree`安装
二、文件权限与用户管理(10个,核心必备,避坑关键)
Linux是多用户系统,权限管理是线上安全的核心,也是面试高频考点。
1. **chmod**:修改文件/目录权限
高频示例:`chmod 755 test.sh` 给脚本赋执行权限;`chmod -R 755 目录` 递归修改目录权限
核心规则:r=4(读)、w=2(写)、x=1(执行),对应所有者、所属组、其他用户三类权限
避坑提醒:线上环境禁止给文件赋777权限,会带来严重的安全风险
2. **chown**:修改文件/目录的所有者和所属组
高频示例:`chown -R user:group 目录` 递归修改目录的所有者和所属组
避坑提醒:服务启动报错“权限不足”,优先排查文件所有者是否和启动用户一致
3. **chgrp**:修改文件/目录的所属组
高频示例:`chgrp group test.txt` 单独修改文件所属组,比chown更轻量化
4. **umask**:设置新建文件/目录的默认权限
高频示例:`umask 022` 设置默认权限,新建文件为644,新建目录为755,是线上环境标准配置
5. **useradd**:创建新用户
高频示例:`useradd -m testuser` 创建用户并自动生成家目录,不加`-m`不会创建家目录
6. **userdel**:删除用户
高频示例:`userdel -r testuser` 删除用户并同步删除家目录和邮件目录,避免残留文件
7. **usermod**:修改用户属性
高频示例:`usermod -aG root testuser` 将用户添加到root组,赋予额外权限
避坑提醒:加`-a`是追加组,不加会覆盖用户原有所有组,导致权限异常
8. **passwd**:修改用户密码
高频示例:`passwd testuser` 修改指定用户密码,root用户可修改所有用户密码
9. **groupadd**:创建用户组
高频示例:`groupadd testgroup` 创建新用户组,用于批量管理用户权限
10. **groupdel**:删除用户组
高频示例:`groupdel testgroup` 删除用户组,删除前需先移除组内所有用户
三、进程与系统资源监控(15个,线上排查核心,进阶必备)
线上服务卡顿、宕机、CPU内存爆满,全靠这些命令定位问题。
1. **ps**:查看进程快照
高频示例:`ps -ef | grep java` 查找所有java相关进程,获取进程PID
进阶用法:`ps aux --sort=-%cpu` 按CPU使用率降序排序进程,快速定位资源占用高的进程
2. **top**:实时监控系统进程与资源占用
高频示例:直接执行`top`,实时查看CPU、内存使用率,进程运行状态,`Shift+P`按CPU排序,`Shift+M`按内存排序
避坑提醒:`top` 查看的是进程整体占用,线程级排查需用`top -H -p PID`
3. **htop**:可视化实时监控(top升级版)
核心优势:比top界面更友好,支持鼠标操作、颜色区分、横向滚动,功能更全面
避坑提醒:默认未安装,需执行`yum install htop`安装
4. **glances**:全维度系统监控工具
高频示例:直接执行`glances`,一站式查看CPU、内存、磁盘、网络、进程、IO等所有核心指标
5. **kill**:终止进程
高频示例:`kill -9 进程PID` 强制终止进程;`kill -15 进程PID` 优雅终止进程,允许进程释放资源后退出
⚠️ 避坑提醒:优先用`-15`,`-9`强制终止可能导致数据丢失、文件损坏
6. **killall/pkill**:批量终止进程
高频示例:`killall java` 终止所有java进程;`pkill -u testuser` 终止指定用户的所有进程
避坑提醒:线上环境慎用,避免误杀核心服务进程
7. **nice/renice**:调整进程优先级
高频示例:`nice -n 10 ./test.sh` 启动脚本并设置优先级;`renice -n -5 进程PID` 修改运行中进程的优先级
核心规则:优先级范围-20到19,数值越小优先级越高,只有root用户可设置负数值
8. **nohup**:后台运行进程,关闭终端不终止
高频示例:`nohup java -jar app.jar > app.log 2>&1 &` 后台运行jar包,日志输出到app.log
核心避坑:结尾必须加`&` 放入后台,否则终端会被占用,无法执行其他操作
9. **&**:将命令放入后台运行
高频示例:`./test.sh &` 后台运行脚本,配合`nohup`使用可实现服务常驻后台
10. **jobs**:查看当前终端后台运行的任务
高频示例:直接执行`jobs`,查看后台任务的编号、状态,配合fg/bg使用
11. **fg**:将后台任务调到前台运行
高频示例:`fg 任务编号` 将指定后台任务调到前台,方便查看输出、终止进程
12. **bg**:将暂停的后台任务继续在后台运行
高频示例:`bg 任务编号` 让暂停的任务继续后台运行,`Ctrl+Z`可暂停前台任务
13. **free**:查看系统内存使用情况
高频示例:`free -h` 人性化显示内存总量、已用、空闲、缓存占用,线上内存溢出排查必备
避坑提醒:不要只看free列,available列才是真正可分配的空闲内存
14. **uptime**:查看系统运行时间与平均负载
高频示例:直接执行`uptime`,查看系统已运行时长、1/5/15分钟平均负载,快速判断系统是否过载
核心标准:平均负载不超过CPU核心数,超过则说明系统资源紧张
15. **vmstat**:实时监控系统CPU、内存、IO、上下文切换
高频示例:`vmstat 1 5` 每秒采样1次,共采样5次,排查系统卡顿、IO瓶颈核心工具
四、网络排查与通信(15个,服务互通、线上故障排查必备)
服务无法访问、接口超时、网络不通,全靠这些命令定位根因。
1. **ping**:测试网络连通性
高频示例:`ping baidu.com` 测试与目标地址的网络连通性,`ping -c 5 baidu.com` 指定发送5个数据包
避坑提醒:目标服务器禁ping的话,会显示请求超时,不代表网络不通
2. **telnet**:测试端口连通性
高频示例:`telnet 192.168.1.1 8080` 测试目标IP的8080端口是否开放,服务端口不通排查首选
3. **netstat**:查看网络连接、端口监听、路由表信息
高频示例:`netstat -tunlp` 查看所有正在监听的TCP/UDP端口,以及对应的进程PID
避坑提醒:最小化系统默认未安装,需安装net-tools工具包,新系统优先用ss命令
4. **ss**:netstat升级版,更快查看网络连接状态
高频示例:`ss -tunlp` 功能同netstat,执行速度更快,资源占用更低,是系统默认自带工具
5. **ip**:网络配置全能工具,替代ifconfig
高频示例:`ip addr` 查看所有网卡的IP地址;`ip route` 查看系统路由表
6. **ifconfig**:查看和配置网卡信息
高频示例:直接执行`ifconfig`,查看网卡IP、MAC地址、网卡流量,排查网卡故障必备
7. **route**:查看和配置系统路由表
高频示例:`route -n` 查看路由表,排查跨网段访问不通、网关配置错误问题
8. **curl**:发送网络请求,测试接口连通性
高频示例:`curl http://localhost:8080/health` 测试服务健康检查接口;`curl -I baidu.com` 查看响应头信息
进阶用法:`curl -X POST -d "参数" 接口地址` 发送POST请求,无需postman即可快速测试接口
9. **wget**:下载网络文件
高频示例:`wget https://example.com/file.zip` 下载文件;`wget -c 下载地址` 断点续传,大文件下载必备
10. **nc**:网络瑞士军刀,端口监听、文件传输、网络测试全能
高频示例:`nc -l 8080` 监听8080端口,模拟服务端;`nc 192.168.1.1 8080` 模拟客户端连接端口
11. **tcpdump**:网络抓包工具,深度排查网络问题
高频示例:`tcpdump -i eth0 port 8080` 抓取eth0网卡上8080端口的所有数据包,分析接口请求、网络异常
12. **nslookup**:域名解析查询
高频示例:`nslookup baidu.com` 查看域名对应的IP地址,排查域名解析失败问题
13. **dig**:域名解析详细查询工具,比nslookup更全面
高频示例:`dig baidu.com` 查看域名的完整解析记录,包括A记录、CNAME、TTL等信息
14. **iptables**:Linux防火墙配置工具
高频示例:`iptables -L` 查看防火墙规则;`iptables -A INPUT -p tcp --dport 8080 -j ACCEPT` 开放8080端口
15. **firewall-cmd**:firewalld防火墙配置工具(CentOS7+默认)
高频示例:`firewall-cmd --permanent --add-port=8080/tcp` 永久开放8080端口;`firewall-cmd --reload` 重载规则生效
避坑提醒:服务端口无法访问,优先排查防火墙是否开放对应端口
五、文本处理与内容编辑(15个,提效神器,老手必备)
批量处理日志、修改配置、筛选内容,这些命令能帮你节省90%的时间。
1. **vi/vim**:Linux核心文本编辑器
高频核心操作:`vim test.txt` 打开文件;按`i`进入编辑模式,`Esc`退出编辑模式;`:wq`保存退出,`:q!`强制不保存退出
进阶技巧:`/关键词` 全文搜索关键词,`n`跳转到下一个匹配项,排查日志必备
2. **grep**:文本内容搜索,日志筛选神器
高频示例:`grep "ERROR" test.log` 筛选日志中所有包含ERROR的行;`grep -r "关键词" 目录` 递归搜索目录下所有文件的关键词
进阶用法:`grep -A 10 -B 10 "ERROR" test.log` 显示匹配行的前后10行,完整查看报错上下文
3. **sed**:流式文本编辑器,批量修改文件内容
高频示例:`sed -i 's/旧内容/新内容/g' test.txt` 批量替换文件中所有旧内容为新内容,无需打开文件
避坑提醒:加`-i`会直接修改原文件,建议先不加`-i`测试替换结果,确认无误后再执行
4. **awk**:文本处理全能工具,结构化数据处理首选
高频示例:`awk '{print $1}' test.txt` 打印文件每一行的第一列内容;`awk -F ':' '{print $1}' /etc/passwd` 按冒号分隔,打印第一列
核心优势:处理超大日志、结构化数据,比手动筛选效率提升百倍
5. **sort**:文本内容排序
高频示例:`sort test.txt` 按字母排序;`sort -n test.txt` 按数字排序;`sort -u test.txt` 排序并去重
6. **uniq**:文本内容去重
高频示例:`uniq test.txt` 去除连续重复行;`sort test.txt | uniq` 全文件去重,必须先排序再去重
7. **cut**:截取文本指定列内容
高频示例:`cut -d ',' -f 1,3 test.csv` 按逗号分隔,截取csv文件的第1和第3列,处理表格数据必备
8. **tr**:字符替换、删除、压缩
高频示例:`tr 'a-z' 'A-Z' < test.txt` 将文件内容全部转为大写;`tr -d ' ' < test.txt` 删除文件中所有空格
9. **paste**:合并多个文件的内容
高频示例:`paste file1.txt file2.txt` 按行合并两个文件的内容,用制表符分隔,批量合并数据必备
10. **diff**:对比两个文件的内容差异
高频示例:`diff file1.txt file2.txt` 对比两个文件的不同之处,排查配置文件修改、代码差异首选
11. **patch**:根据diff生成的补丁文件,批量修改文件
高频示例:`patch file.txt < diff.patch` 给文件应用补丁,批量同步文件修改,无需手动逐行修改
12. **join**:按共同字段合并两个文件的内容
高频示例:`join file1.txt file2.txt` 按两个文件第一列的共同字段,合并内容,相当于数据库的join操作
13. **split**:拆分大文件
高频示例:`split -l 1000 big.txt small_` 将大文件按每1000行拆分为多个小文件,解决大文件无法打开、传输的问题
14. **strings**:提取二进制文件中的可打印字符串
高频示例:`strings app` 提取二进制程序中的字符串,排查程序版本、内置配置、隐藏信息必备
15. **iconv**:转换文件编码格式
高频示例:`iconv -f GBK -t UTF-8 test.txt -o test_utf8.txt` 将文件从GBK编码转为UTF-8编码,解决中文乱码问题
Linux的核心能力,从来不是死记硬背多少命令,而是掌握核心逻辑,用对高频工具。
把这些常用命令吃透,你就能在日常开发、线上排查中,远超80%只会复制粘贴的同行。
最后,感谢你读到这里。
这里是「程序员干货手册」,专注分享程序员最需要的硬核干货、面试技巧、职场成长和效率工具,帮你少走弯路,快速成长。
如果本文对你有帮助,别忘了点赞、在看、转发给身边的程序员朋友,你的支持就是我持续更新的最大动力。