Linux shell脚本:统计非/sbin/nologin用户与最大UID
需积分: 5 150 浏览量
更新于2024-08-05
收藏 14KB DOCX 举报
"第三周作业-正则表达式及shell脚本"
在这份作业中,主要涉及了两个关键知识点:正则表达式和shell脚本。正则表达式是用于匹配字符串模式的一种语言,广泛应用于数据提取、文本搜索和替换等场景。而shell脚本则是Linux或类Unix系统中用于自动化任务的编程工具,通过bash或其他shell环境执行。
1. **正则表达式**:
在这个例子中,`grep -v /sbin/nologin` 使用了正则表达式来筛选 `/etc/passwd` 文件中不包含 `/sbin/nologin` 的行。`grep` 命令是全局正则打印,`-v` 参数表示反向选择,即排除匹配的行。这帮助我们过滤掉了那些使用 `/sbin/nologin` 作为默认shell的用户。
2. **shell脚本**:
- `wc -l` 是一个在shell脚本中常用的命令,用于计算输出行的数量。在这里,它被用来计算非 `/sbin/nologin` 用户的数量。
- `cut -d ':' -f 1` 使用 `cut` 命令按指定分隔符(这里是冒号)分割每行,并显示第一部分(即用户名)。
3. **数据处理**:
- `sort -t ':' -k 3 -n` 这一行用于按第三列(即UID)进行数值排序。`-t` 指定分隔符,`-k` 指定排序的关键字段,`-n` 表示按照数字进行排序。
- `cut -d ':' -f 1,3,7` 用于选取指定字段,这里选取了第一列(用户名)、第三列(UID)和第七列(shell路径)。
4. **查找最大UID的用户**:
通过排序和选取特定字段,我们可以找到具有最大UID的用户。在这个例子中,`root` 用户的UID为0,这是Linux系统的初始用户,拥有最高的权限。
结合这些操作,我们可以编写一个简单的shell脚本来自动完成上述任务,例如:
```bash
#!/bin/bash
# 统计非/sbin/nologin用户的数量
count=$(cat /etc/passwd | grep -v /sbin/nologin | wc -l)
echo "非/sbin/nologin用户数量: $count"
# 显示非/sbin/nologin用户的用户名
echo "非/sbin/nologin用户的用户名:"
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
# 查找并显示最大UID的用户信息
max_uid_user=$(cat /etc/passwd | sort -t : -k 3 -n | tail -n 1 | cut -d : -f 1,3,7)
echo "最大UID用户: $max_uid_user"
```
这个脚本首先计算非 `/sbin/nologin` 用户的总数,然后列出这些用户的用户名,并找出UID最大的用户信息。这展示了shell脚本在处理系统数据时的灵活性和实用性。
2021-09-17 上传
2024-06-18 上传
2021-10-23 上传
2023-06-20 上传
2024-09-03 上传
2023-06-24 上传
2023-11-17 上传
2023-11-27 上传
2023-07-29 上传
weixin_38933070
- 粉丝: 0
- 资源: 2
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践