在Linux/Unix运维、开发工作中Shell是不可或缺的工具——它既是命令解释器也是脚本编程语言能高效完成文件操作、进程管理、自动化部署等核心任务。本文整理了日常工作中最常用的Shell命令与脚本按场景分类汇总兼顾新手入门与老手速查收藏即用告别重复记忆提升工作效率。本文以最常用的BashBourne Again Shell为核心展开它是大多数Linux系统的默认Shell兼容性强、功能全面文中所有命令与脚本均经过实际测试可直接复制使用。一、基础必备命令高频速查此类命令是日常操作的基石高频使用且语法简单重点记常用选项即可无需死记所有参数。1. 目录与文件操作最常用命令核心功能常用选项与示例pwd显示当前工作目录路径直接执行pwd输出如/home/usercd切换工作目录cd ~回到主目录、cd ..回到上级目录、cd /usr/local绝对路径切换ls列出目录下的文件/目录ls -l长格式显示权限、大小、修改时间、ls -a显示隐藏文件以.开头、ls -lh人性化显示文件大小mkdir创建目录mkdir test创建单个目录、mkdir -p a/b/c递归创建多级目录父目录不存在则自动创建touch创建空文件或更新文件修改时间touch demo.sh创建脚本文件、touch -d 2026-04-10 test.txt修改文件时间戳cp复制文件/目录cp file1 file2复制file1为file2、cp -r dir1 dir2递归复制目录含子目录、cp -v file /tmp显示复制过程mv移动/重命名文件/目录mv file1 dir/移动file1到dir目录、mv oldname newname重命名文件/目录、mv -f file /tmp强制移动不提示rm删除文件/目录谨慎使用不可恢复rm file删除文件会提示、rm -r dir递归删除目录、rm -rf *强制删除当前目录所有内容高危cat查看文件内容适合短文件cat demo.sh直接输出文件内容、cat -n file显示行号、cat file1 file2 file3合并两个文件内容到file32. 文件内容查看与搜索命令核心功能常用选项与示例more分页查看长文件向下翻页more log.txt按Enter翻行q退出空格翻页less分页查看长文件上下翻页更灵活less log.txt按↑↓键翻行/关键词搜索q退出head查看文件前N行head -10 log.txt查看前10行、head -n 5 demo.sh查看前5行n可省略tail查看文件后N行实时监控日志tail -5 log.txt查看后5行、tail -f log.txt实时监控文件新增内容ctrlc退出grep文本过滤搜索匹配的字符串grep error log.txt搜索含error的行、grep -i Error log.txt忽略大小写、grep -v info log.txt排除含info的行sed文本替换、删除、新增流式编辑sed s/old/new/g file全局替换old为new、sed /^#/d file删除以#开头的注释行3. 系统信息与进程管理命令核心功能常用选项与示例whoami显示当前登录用户名直接执行whoami输出如rootps查看进程状态ps aux查看所有进程详细信息、ps -ef | grep python过滤出python相关进程kill终止进程kill 1234通过PID终止进程、kill -9 1234强制终止进程无法拦截top实时监控系统资源与进程CPU、内存直接执行top按q退出按P按CPU排序按M按内存排序df查看磁盘空间使用情况df -h人性化显示磁盘大小单位为GB/MBdu查看目录/文件大小du -sh dir显示目录总大小人性化格式、du -h --max-depth1查看当前目录下各子目录大小4. 权限管理Linux文件/目录权限分为读r4、写w2、执行x1分别对应所有者u、组用户g、其他用户o常用命令如下命令核心功能常用选项与示例chmod修改文件/目录权限chmod 755 file所有者rwx其他rx、chmod x demo.sh给所有用户添加执行权限、chmod u-w file取消所有者写权限chown修改文件/目录所有者和所属组chown root:root file将文件所有者和组改为root、chown -R user:group dir递归修改目录及子内容权限二、进阶常用命令提升效率此类命令在批量操作、日志分析、文件处理中高频使用掌握后能大幅提升工作效率减少重复操作。1. 批量操作与管道xargs将管道输入转为命令参数解决“参数过长”问题示例find /tmp -name *.log | xargs rm -f批量删除/tmp下所有.log文件示例cat file.txt | xargs -I {} ./script.sh {}将file.txt每行内容作为参数传入脚本执行find按条件查找文件/目录功能强大示例find /home -name *.sh按文件名查找.sh文件示例find /var -mtime 7 -name *.log | xargs rm -f删除7天前的.log文件示例find / -size 100M查找大于100M的文件管道|将前一个命令的输出作为后一个命令的输入串联执行示例ps aux | grep java | wc -l统计java进程数量示例cat log.txt | grep error | tail -10查看日志中最后10条错误信息2. 文本处理进阶awk强大的文本分析工具按列处理数据核心分隔符列操作示例cat test.txt | awk {print $1,$3}打印第1列和第3列内容示例awk -F , {if($2100) print $1} data.csv以逗号为分隔符打印第2列大于100的行的第1列tr字符替换、删除与压缩仅通过标准输入接收参数示例echo HELLO | tr A-Z a-z大小写转换输出hello示例cat file.txt | tr -d 0-9删除文件中的所有数字示例echo GNU is not UNix | tr -s 压缩连续空格为单个空格sort文本排序支持按列、数值、字典序排序示例sort -n test.txt按数值排序示例sort -k2 test.txt按第2列排序uniq去除重复行需先排序示例sort test.txt | uniq去除重复行示例sort test.txt | uniq -c统计重复行的次数3. 其他高频进阶命令命令核心功能常用示例tar压缩/解压文件常用格式tar.gz、tar.bz2压缩tar -zcvf test.tar.gz dir/解压tar -zxvf test.tar.gzwget下载网络文件wget https://xxx.com/file.tar.gz直接下载、wget -P /tmp https://xxx.com/file.tar.gz指定下载目录curl发送HTTP请求、下载文件比wget更灵活curl https://xxx.com/api请求接口、curl -O https://xxx.com/file.tar.gz下载文件crontab定时任务调度crontab -e编辑定时任务、crontab -l查看定时任务、0 2 * * * /root/script.sh每天凌晨2点执行脚本md5sum计算文件MD5值校验文件完整性md5sum file.txt输出文件MD5值、md5sum -c check.md5校验文件三、Shell脚本入门基础语法常用脚本Shell脚本.sh后缀可将一系列命令批量执行实现自动化任务核心是“按顺序执行命令逻辑控制”以下是基础语法和实战脚本直接复制可运行。1. 脚本基础语法必记脚本开头#!/bin/bash指定解释器为Bash必须放在第一行注释# 这是单行注释多行注释可使用:EOF 注释内容 EOF变量定义时无空格nametest使用时加$echo $name加{}避免歧义echo ${name}123参数传递执行脚本时传递参数$1第一个参数、$2第二个参数、$#参数个数、$*所有参数逻辑判断if [ 条件 ]; then ... elif ... else ... fi注意括号前后有空格循环for循环、while循环适合批量处理执行脚本先给权限chmod x script.sh再执行./script.sh或bash script.sh无需权限2. 常用实战脚本直接复用脚本1Hello World入门示例#!/bin/bash # 入门示例输出Hello World echo Hello World # 定义变量并使用 nameShell echo Hello, ${name}!脚本2批量备份文件#!/bin/bash # 批量备份指定目录下的.sh文件到/tmp/backup带时间戳 BACKUP_DIR/tmp/backup SOURCE_DIR/home/user/scripts # 判断备份目录是否存在不存在则创建 if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi # 备份文件时间戳格式20260410 DATE$(date %Y%m%d) cp $SOURCE_DIR/*.sh $BACKUP_DIR/backup_$DATE/ echo 备份完成备份文件路径$BACKUP_DIR/backup_$DATE/脚本3日志清理删除7天前的日志#!/bin/bash # 清理/var/log目录下7天前的.log文件避免磁盘占满 LOG_DIR/var/log # 查找7天前的.log文件并删除输出删除记录 find $LOG_DIR -name *.log -mtime 7 -exec rm -f {} \; echo 日志清理完成已删除7天前的.log文件脚本4用户输入交互示例#!/bin/bash # 接收用户输入进行简单交互 echo 请输入你的姓名 read name # 读取用户输入存入name变量 echo 请输入你的年龄 read age echo 你好${name}你的年龄是${age}岁未来可期 # 条件判断判断年龄是否大于18 if [ $age -gt 18 ]; then echo 你已成年可以独立操作Shell脚本啦 else echo 你还未成年建议在指导下使用Shell哦 fi四、避坑指南新手必看1. 路径问题尽量使用绝对路径如/home/user/file避免相对路径导致脚本执行失败尤其定时任务2. 权限问题执行脚本提示“Permission denied”需用chmod x 脚本名添加执行权限3. 空格问题变量定义nametest、条件判断[ $age -gt 18 ]中括号和内容之间必须有空格否则会报错4. 高危命令rm -rf *、rm -rf /极其危险执行前务必确认路径可先使用ls查看当前目录内容5. 脚本编码避免中文乱码脚本保存为UTF-8编码可在脚本开头添加export LANGen_US.UTF-86. 测试脚本新写的脚本先单独执行关键命令再整体运行避免批量操作出错。五、总结本文汇总了Shell日常工作中最常用的命令与脚本按“基础-进阶-脚本-避坑”分类兼顾实用性和易用性适合作为速查手册随时查阅。Shell的核心是“简化操作、批量执行”无需死记所有命令重点掌握常用场景和语法多实践、多复用脚本就能逐步提升效率。后续可根据自身工作场景扩展脚本功能如自动化部署、日志分析、服务监控等Shell的灵活性会让你的运维、开发工作事半功倍。收藏本文下次遇到Shell相关操作直接检索即可告别重复查资料补充若需快速查询特定命令可使用man 命令名如man ls查看官方详细文档或使用命令名 --help查看简要帮助信息。