【Shell的基本操作】

文章目录

    • 一、实验目的
    • 二、实验环境
    • 三、实验内容
      • 3.1 Shell变量与脚本基础
      • 3.2 定制终端提示符(PS1变量)
      • 3.3 文件查找与类型确认(find命令)
      • 3.4 管道命令实战(用户登录统计)
      • 3.5 交互式备份压缩脚本
    • 四、总结
      • 4.1 问题与解决
      • 4.2 实验收获

一、实验目的

  1. 掌握Shell变量赋值与echo命令的使用,实现字符串拼接与输出。
  2. 学习通过修改PS1环境变量定制终端提示符(路径、日期、时间等)。
  3. 熟练使用find命令查找文件并确认类型。
  4. 理解管道机制,结合whogrepwc等命令统计用户登录信息。
  5. 编写交互式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 问题与解决

  1. 中文输入法安装失败
    在这里插入图片描述

    • 原因:虚拟机未联网,无法直接下载安装包。
    • 解决:通过主机下载zhcon-0.2.6-29.fc24.x86_64.rpm后,使用共享文件夹传输至虚拟机,执行rpm -ivh安装。
  2. 脚本权限错误
    在这里插入图片描述

    • 原因:误将chmod +x写成chmod -x(移除执行权限)。
    • 解决:重新赋予权限chmod +x mysh

4.2 实验收获

  • 深入理解Shell变量作用域与脚本执行机制,掌握echofindwho等基础命令的组合使用。
  • 通过PS1变量定制,学会灵活调整终端交互界面,提升操作效率。
  • 管道机制的实战应用让我认识到Linux命令行“小工具组合大功能”的设计哲学。
  • 交互式脚本的编写初步体验了Shell在系统管理自动化中的价值,后续需进一步学习条件判断、函数封装等高级特性。

结论:本次实验通过理论与实践结合,夯实了Linux Shell基础,为后续网络安全与系统管理课程奠定了重要基础。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速选择算法:优化大数据中的 Top-K 问题

在处理海量数据时,经常会遇到这样的需求:找出数据中最大的前 K 个数,而不必对整个数据集进行排序。这种场景下,快速选择算法(Quickselect)就成了一个非常高效的解决方案。本文将通过一个 C 实现的快速选择算…

AQS 基本思想与源码分析

充分了解 AbstractQueuedSynchronizer 对于深入理解并发编程是有益处的,它是用来构建锁或者其他同步组件的基础框架,我们常用的同步工具类如 CountDownLatch、Semaphore、ThreadPoolExecutor、ReentrantLock 和 ReentrantReadWriteLock 内部都用到了它。…

理解位图算法:使用 C++ 实现高效数据查重

在处理海量数据时,我们常常需要检查某个元素是否已经存在于集合中。传统的方法如哈希表或集合容器虽然有效,但在数据量极大的情况下会占用大量内存。这时,位图算法 (Bitmap) 就成为了一种非常高效的解决方案。本文将通过分析一段使用位图算法…

数学复习笔记 12

前言 现在做一下例题和练习题。矩阵的秩和线性相关。另外还要复盘前面高数的部分的内容。奥,之前矩阵的例题和练习题,也没有做完,行列式的例题和练习题也没有做完。累加起来了。以后还是得学一个知识点就做一个部分的内容,日拱一…

1-10 目录树

在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。 输入格式: 输入首先给出正整数N(≤104)…

Python爬虫实战:研究 RPC 远程调用机制,实现逆向解密

1. 引言 在网络爬虫技术的实际应用中,目标网站通常采用各种加密手段保护其数据传输和业务逻辑。这些加密机制给爬虫开发带来了巨大挑战,传统的爬虫技术往往难以应对复杂的加密算法。逆向解密作为一种应对策略,旨在通过分析和破解目标网站的加密机制,获取原始数据。 然而,…

debugfs:Linux 内核调试的利器

目录 一、什么是 debugfs?二、debugfs 的配置和启用方式2.1 内核配置选项2.2 挂载 debugfs2.3 Android 系统中的 debugfs 三、debugfs 的典型应用场景3.1 调试驱动开发3.2 内核子系统调试3.3 性能分析 四、常见 debugfs 子目录与功能示例4.1 /sys/kernel/debug/trac…

lua 作为嵌入式设备的配置语言

从lua的脚本中获取数据 lua中栈的索引 3 | -1 2 | -2 1 | -3 可以在lua的解释器中加入自己自定的一些功能,其实没啥必要,就是为了可以练习下lua

棋牌室台球室快速接入美团团购接口

北极星平台从2024年12月份开始慢慢关闭,现在很多开发者反馈北极星token已经不能刷新了,全部迁移到美团团购综合平台。 申请这个平台要求很高 1、保证金费用要15万起步 2、平台必须是二级等保和安全产品 ,一个二级等保费用10万起步 所以很多…

开源轻量级地图解决方案leaflet

Leaflet 地图:开源轻量级地图解决方案 Leaflet 是一个开源的 JavaScript 库,用于在网页中嵌入交互式地图。它以轻量级、灵活性和易用性著称,适用于需要快速集成地图功能的项目。以下是关于 Leaflet 的详细介绍和使用指南。 1. Leaflet 的核心…

一个批量文件Dos2Unix程序(Microsoft Store,开源)1.1.0 编码检测和预览

之前的版本是个意思意思,验证商店发布的(其实是我以前自己用的工具),这次把格式检查和转换都做上了,功能应该差不多了,还有一些需要小改进的地方。 因为还没什么用户嘛,还是保持全功能免费试用。…

特征提取:如何从不同模态中获取有效信息?

在多模态学习中,不同模态(文本、图像、语音、视频、传感器数据等)所携带的信息丰富且互补。但不同模态的数据结构、表示空间、时空分布截然不同,因此,如何对各模态进行高效、有效的特征提取,是整个多模态学…

Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程

爬虫实战:JS逆向实现CSDN文章导出教程 在这篇教程中,我将带领大家实现一个实用的爬虫项目:导出你在CSDN上发布的所有文章。通过分析CSDN的API请求签名机制,我们将绕过平台限制,获取自己的所有文章内容,并以…

交叉熵损失函数,KL散度, Focal loss

交叉熵损失函数(Cross-Entropy Loss) 交叉熵损失函数,涉及两个概念,一个是损失函数,一个是交叉熵。 首先,对于损失函数。在机器学习中,损失函数就是用来衡量我们模型的预测结果与真实结果之间…

149.WEB渗透测试-MySQL基础(四)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:148.WEB渗透测试-MySQL基础(三) 非关系型数据库: &a…

c/c++中程序内存区域的划分

c/c程序内存分配的几个区域: 1.栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内存分配运算内置于处理器的指令集中,效率很高但是分配的内存容量有…

构建稳定的金字塔模式生态:从自然法则到系统工程

在自然界中,金字塔结构广泛存在于生态系统之中,表现为营养级能量金字塔、生物量金字塔和数量金字塔等形式。这种结构不仅形象地描述了生态能量流转的规律,也体现出生态系统中“稳定性”与“层级性”的天然法则。在现代软件架构、企业组织、平…

Vue 3.0双向数据绑定实现原理

Vue3 的数据双向绑定是通过响应式系统来实现的。相比于 Vue2,Vue3 在响应式系统上做了很多改进,主要使用了 Proxy 对象来替代原来的 Object.defineProperty。本文将介绍 Vue3 数据双向绑定的主要特点和实现方式。 1. 响应式系统 1.1. Proxy对象 Vue3 …

TIP-2021《SRGAT: Single Image Super-Resolution With Graph Attention Network》

推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统&#xf…

大语言模型与多模态模型比较

一、核心差异:输入数据类型与模态融合 输入数据类型 LLM:仅处理文本数据,例如文本分类、机器翻译、问答等任务,通过大规模语料库学习语言规律。 LMM:支持文本、图像、音频、视频等多种模态输入,例如根据图…