文章目录
- 一、实验目的
- 二、实验环境
- 三、实验内容
- 3.1 Shell变量与脚本基础
- 3.2 定制终端提示符(PS1变量)
- 3.3 文件查找与类型确认(find命令)
- 3.4 管道命令实战(用户登录统计)
- 3.5 交互式备份压缩脚本
- 四、总结
- 4.1 问题与解决
- 4.2 实验收获
一、实验目的
- 掌握Shell变量赋值与
echo
命令的使用,实现字符串拼接与输出。 - 学习通过修改
PS1
环境变量定制终端提示符(路径、日期、时间等)。 - 熟练使用
find
命令查找文件并确认类型。 - 理解管道机制,结合
who
、grep
、wc
等命令统计用户登录信息。 - 编写交互式Shell脚本,实现目录备份压缩功能(支持gzip/bzip2选择)。
二、实验环境
- 虚拟机平台:VMware Workstation
- 操作系统:Red Hat Linux
- 辅助工具:
vi
文本编辑器、rpm
包管理器(用于安装中文输入法zhcon
)
三、实验内容
3.1 Shell变量与脚本基础
- 变量赋值与输出
name="xxx" is="是" class="网安22xx" echo "$name$is$class的学生" # 输出:黄羽悦是网安2211的学生
- 脚本文件创建
使用vi mysh
编写脚本,内容如下:
赋予执行权限并运行:#!/bin/bash name="xxx" is="是" class="网安22xx" echo "$name$is$class的学生"
chmod +x mysh ./mysh # 正确输出结果
3.2 定制终端提示符(PS1变量)
- 临时修改示例
PS1='\w$ ' # 当前路径作为提示符 PS1='$(date +%F)$ ' # 当前日期(YYYY-MM-DD) PS1='$(date +%T)$ ' # 当前时间(HH:MM:SS)
- 永久修改
编辑~/.bashrc
,添加:
执行PS1='\w$(if [ $UID -eq 0 ]; then echo "#"; else echo "$"; fi) '
source ~/.bashrc
生效。
3.3 文件查找与类型确认(find命令)
find / -name passwd 2>/dev/null | while read file; do file "$file" # 输出文件类型(如"/etc/passwd: ASCII text")
done
3.4 管道命令实战(用户登录统计)
- 创建用户:
useradd abc && echo "123456" | passwd --stdin abc
- 远程登录用户数(结果为1):
who | grep "pts/" | wc -l
- 虚拟控制台登录的abc用户数(结果为2):
who | grep "abc" | grep -v "pts/" | wc -l
3.5 交互式备份压缩脚本
#!/bin/bash
read -p "选择压缩方式(1:gzip,2:bzip2):" choice
read -p "输入备份目录路径:" source_dir
read -p "输入备份文件名:" backup_file case $choice in 1) tar -czvf "$backup_file.tar.gz" "$source_dir" ;; 2) tar -cjvf "$backup_file.tar.bz2" "$source_dir" ;; *) echo "选择错误!" && exit 1 ;;
esac
echo "压缩完成,文件路径:${backup_file}.tar.${choice:==1?gz:bz2}"
四、总结
4.1 问题与解决
-
中文输入法安装失败
- 原因:虚拟机未联网,无法直接下载安装包。
- 解决:通过主机下载
zhcon-0.2.6-29.fc24.x86_64.rpm
后,使用共享文件夹传输至虚拟机,执行rpm -ivh
安装。
-
脚本权限错误
- 原因:误将
chmod +x
写成chmod -x
(移除执行权限)。 - 解决:重新赋予权限
chmod +x mysh
。
- 原因:误将
4.2 实验收获
- 深入理解Shell变量作用域与脚本执行机制,掌握
echo
、find
、who
等基础命令的组合使用。 - 通过
PS1
变量定制,学会灵活调整终端交互界面,提升操作效率。 - 管道机制的实战应用让我认识到Linux命令行“小工具组合大功能”的设计哲学。
- 交互式脚本的编写初步体验了Shell在系统管理自动化中的价值,后续需进一步学习条件判断、函数封装等高级特性。
结论:本次实验通过理论与实践结合,夯实了Linux Shell基础,为后续网络安全与系统管理课程奠定了重要基础。