news 2026/7/7 23:45:16

Linux Shell 脚本 7 大高频操作实战:从文件处理到用户管理,覆盖 90% 期末考点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux Shell 脚本 7 大高频操作实战:从文件处理到用户管理,覆盖 90% 期末考点

Linux Shell 脚本 7 大高频操作实战:从文件处理到用户管理,覆盖 90% 期末考点

1. 文件查找与内容追加:高效数据管理三板斧

在Linux系统管理中,文件查找与内容追加是最基础却最常考的操作组合。掌握以下三个核心技巧,可以解决80%的文件操作需求:

# 1. 按扩展名查找XML文件并记录路径 find / -name "*.xml" -type f | grep usr >> work1.txt # 2. 获取系统时间并格式化追加 date +'%Y-%m-%d %H:%M:%S' >> work1.txt # 3. 提取/etc/passwd特定行内容 tail -5 /etc/passwd >> work1.txt

关键参数解析:

  • -type f:限定只查找普通文件
  • >>:追加写入(区别于覆盖写入的>
  • +%Y-%m-%d:日期格式化符号需用单引号包裹

注意:使用find搜索系统根目录时,建议添加2>/dev/null过滤权限错误提示,例如:
find / -name "*.conf" -type f 2>/dev/null

2. 用户权限管理:从创建到权限设置的完整流程

用户管理是Shell脚本考核的重点模块,以下是一个包含UID指定、权限修改的完整示例:

# 创建指定UID用户 useradd -u 1024 testuser # 修改文件所有权 chown -R testuser:mail /target_directory # 设置复杂权限组合 chmod u=rwx,g=rx,o= /sensitive_file

权限数字表示法对照表:

权限字符表示数字值
r4
w6
执行x1
全权rwx7

典型应用场景:

  • 755:所有者可读写执行,其他用户只读执行
  • 600:仅所有者可读写
  • 777:开放所有权限(慎用)

3. 定时任务自动化:系统管理的核心技能

crontab是运维自动化的利器,下面通过具体案例演示三种典型配置:

# 每天8:30启动服务 30 8 * * * /usr/sbin/service vsftpd start >> /var/log/ftp.log 2>&1 # 每小时测试网络连通性 0 */1 * * * ping -c 4 baidu.com >> /var/log/network.log # 每周三、六备份 0 21 * * 3,6 tar -zcf /backups/web_$(date +\%Y\%m\%d).tar.gz /var/www

特殊符号说明:

  • *:任意值
  • ,:多个值分隔
  • -:范围值
  • /:步长值

重要提示:crontab中%需要转义为\%,否则会被解析为换行符

4. 文本处理四剑客:grep/sed/awk/cut组合应用

这组命令是处理日志和配置文件的瑞士军刀,看一个综合案例:

# 提取IP访问频次(实验六案例) awk '{print $1}' access.log | sort | uniq -c | sort -nr # 批量修改配置(实验三案例) sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf # 提取特定列数据 cut -d: -f1,3 /etc/passwd >> users.txt

常用参数对比:

命令核心参数典型应用场景
grep-i(忽略大小写)日志过滤
sed-i(直接修改文件)批量替换
awk-F(指定分隔符)列式处理
cut-d(分隔符)提取固定列

5. 压缩归档实战:从基础操作到自动备份

压缩操作在系统维护中频率极高,需要掌握这些关键命令:

# 创建压缩包(实验一案例) tar zcvf log_$(date +%Y%m%d).tar.gz /var/log # 排除特定目录 tar --exclude='*.tmp' -zcf backup.tar.gz /home # 分卷压缩(适用于大文件) tar zcvf - bigfile | split -b 500M - bigfile_part_

压缩格式性能对比:

格式压缩率速度典型命令
.gzgzip/gunzip
.bz2bzip2/bunzip2
.xz最高最慢xz/unxz

6. 流程控制结构:Shell脚本的逻辑骨架

这是Shell编程的必考重点,通过实例掌握三种核心结构:

if-else判断成绩等级:

#!/bin/bash read -p "输入分数: " score if [ $score -lt 60 ]; then echo "不及格" elif [ $score -lt 80 ]; then echo "良好" else echo "优秀" fi

for循环处理文件:

for file in $(ls *.log); do gzip $file mv $file.gz /backups/ done

while读取用户输入:

while true; do read -p "输入命令(q退出): " cmd [ "$cmd" = "q" ] && break eval $cmd done

7. 网络服务管理:FTP与防火墙配置

网络服务配置常出现在实验题中,重点掌握以下操作:

# FTP服务管理(实验三案例) service vsftpd restart chkconfig vsftpd on # 防火墙配置 iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables-save > /etc/sysconfig/iptables # 网络测试组合命令 telnet 192.168.1.100 21 netstat -tulnp | grep vsftpd

服务状态检查命令对比:

命令作用输出特点
service --status-all查看所有服务状态简单状态标识
systemctl list-units显示系统所有单元包含详细描述信息
`ps auxgrep [服务名]`检查进程是否存在

实战技巧:避免常见Shell脚本陷阱

  1. 变量引用问题:始终用${var}代替$var,特别是拼接字符串时

    dir="/tmp" file="${dir}/work.log" # 正确 file="$dir/work.log" # 可能有歧义
  2. 权限检查技巧:关键操作前添加验证

    [ $(id -u) -ne 0 ] && echo "需要root权限" && exit 1
  3. 错误处理机制:使用set -e让脚本遇错即停

    #!/bin/bash set -e critical_command1 critical_command2
  4. 日志记录规范:重要操作记录执行日志

    log(){ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $@" >> /var/log/operation.log } log "开始备份数据库"
  5. 兼容性处理:不同Linux发行版的命令差异

    # 检测系统类型 if [ -f /etc/redhat-release ]; then # CentOS/RHEL系统 installer="yum" elif [ -f /etc/debian_version ]; then # Debian/Ubuntu系统 installer="apt-get" fi
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 23:45:06

MySQL EXISTS 子查询优化:5 个常见低效写法与改写方案

MySQL EXISTS 子查询优化实战:5种典型低效模式与高性能改写方案当数据库查询性能成为瓶颈时,开发者和DBA往往需要深入SQL语句的底层执行逻辑。EXISTS作为MySQL中一个功能强大但容易被误用的子查询操作符,其性能表现高度依赖于编写方式。本文将…

作者头像 李华
网站建设 2026/7/7 23:42:41

DB2 12.1.2 新特性实战:VECTOR 数据类型与 AI 应用集成 3 步指南

DB2 12.1.2 新特性实战:VECTOR 数据类型与 AI 应用集成 3 步指南 当企业数据规模呈指数级增长时,传统的关系型数据库已难以满足现代AI应用对非结构化数据处理的需求。DB2 12.1.2版本带来的VECTOR数据类型,正在重新定义数据库与人工智能的融合…

作者头像 李华
网站建设 2026/7/7 23:34:49

Web Vitals 优化实战:从数据采集到性能提升的完整工程路径

Web Vitals 优化实战:从数据采集到性能提升的完整工程路径 一、性能优化的第一个错误,是在没有数据的情况下开始优化 Web Vitals(LCP、FID/INP、CLS)已经成为衡量前端性能体验的事实标准。但很多团队在优化 Web Vitals 时&#xf…

作者头像 李华
网站建设 2026/7/7 23:33:59

从单机到全家共享:Sunshine如何重新定义游戏串流体验

从单机到全家共享:Sunshine如何重新定义游戏串流体验 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在数字娱乐的演进历程中,游戏串流技术正经历着从单一设…

作者头像 李华
网站建设 2026/7/7 23:32:28

Linux x86-64 分页机制:4级页表下的虚拟地址转换深度解析

Linux x86-64 分页机制:4级页表下的虚拟地址转换深度解析 1. 现代内存管理的基本框架 在计算机体系结构中,内存管理单元(MMU)负责将程序使用的虚拟地址转换为物理内存中的实际地址。x86-64架构采用四级页表结构实现这一转换过程&…

作者头像 李华