【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战

这篇具有很好参考价值的文章主要介绍了【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

🌈个人主页:Sarapines Programmer
🔥 系列专栏:《操作系统实验室》
🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

目录

🪐1 初识Linux OS

🪐2 shell 编程的解密与实战

🌍1. 实验目的

🌍2. 实验准备

🌍3. 实验内容

🌍4. 实验心得

📝总结


🪐1 初识Linux OS

Linux是一种开源的Unix-like操作系统内核,它是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux内核最初是由芬兰程序员Linus Torvalds在1991年创建的,之后成为自由软件和开源社区的一个主要项目。

以下是Linux操作系统的一些主要特点和组成部分:

  1. 内核(Kernel): Linux内核是操作系统的核心,它管理系统资源,如处理器、内存、设备驱动程序等。Linus Torvalds最初编写了Linux内核,它是Linux操作系统的基础。

  2. Shell(命令解释器): Linux操作系统使用命令行界面(CLI),用户与系统交互通过Shell。用户可以通过输入命令执行各种任务,管理文件、进程、权限等。常见的Shell包括Bash(Bourne Again SHell)和Zsh。

  3. 文件系统: Linux支持多种文件系统,包括Ext4、XFS、Btrfs等。文件系统负责管理存储设备上的文件和目录,以及文件的权限、所有权等信息。

  4. 用户界面: 虽然Linux以CLI为主,但也支持图形用户界面(GUI)。常见的Linux桌面环境有GNOME、KDE、XFCE等,它们提供了直观的用户体验。

  5. 软件包管理系统: 大多数Linux发行版都有自己的软件包管理系统,用于安装、更新和删除软件。常见的包管理工具有APT(Debian/Ubuntu)、YUM(Red Hat/CentOS)、Pacman(Arch Linux)等。

  6. 网络功能: Linux具有强大的网络功能,支持各种网络协议和服务。它可以作为服务器运行各种网络服务,如Web服务器(Apache、Nginx)、邮件服务器(Postfix、Sendmail)、文件服务器(Samba)等。

  7. 多用户和多任务: Linux是一个多用户系统,多个用户可以同时访问同一台机器。它也是一个多任务系统,可以同时运行多个进程。

  8. 安全性: Linux以安全性而闻名,系统管理员可以设置用户权限、访问控制列表(ACLs)等来确保系统的安全性。

  9. 开源和自由: Linux是开源软件,其源代码可以被任何人查看、修改和分发。大多数Linux发行版是免费提供的,用户可以自由选择、使用和分发。

  10. 发行版(Distribution): 由于Linux内核是开源的,不同的组织和社区创建了各种Linux发行版,例如Ubuntu、Debian、Fedora、CentOS、Arch Linux等。每个发行版都有自己的特点和包管理系统。

总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。


🪐2 shell 编程的解密与实战

🌍1. 实验目的

  •  掌握Linux中"三剑客"grep、sed、awk的使用方法;

  • 掌握Bash shell脚本编程的基本规则,包括函数的定义与调用,以及控制结构的应用;

  • 提升对Linux环境下文本处理和脚本编程的实际操作能力。 


🌍2. 实验准备

  • 获取 Linu x 镜像文件:下载适用于虚拟机的 Linux 镜像文件,比如 Ubuntu 21.04,从 Ubuntu 官方网站 获取。

  • 安装虚拟化软件:安装 VMware Workstation 或 Virtualbox,两者提供简便的虚拟机管理和配置。

  • 创建 Linux 虚拟机:打开虚拟化软件,按照指引创建新虚拟机。设置内存为 2GB 或更多,其余选项选择 默认值。加载下载好的 Linux 系统 ISO 镜像文件,启动虚拟机完成 Linux 系统安装。


🌍3. 实验内容

1. 试分别用grep、sed和awk实现:对某个脚本文件ifile(比如/etc/profile)进行如下操作:

(1)显示其中的所注释行(含#开始的行,或#号前全是白空格开始的行);

(2)显示去除了所有注释行的内容;

(3)显示所有的(去掉注释和空行)有效行。

解:

1.创建脚本文件

首先需要在终端输入touch SYM.sh创建一个名为SYM脚本文件,创建成功后输入ls可以发现SYM.sh创建成功。

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

在终端输入vim SYM.sh编写一个简单的脚本程序如下:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理  

在终端输入bash -x SYM.sh输出结果包括了注释行和非注释行,如下图

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

2.使用grep、sed和awk对脚本文件SYM.sh实现:

(1)显示其中的所注释行(含#开始的行,或#号前全是白空格开始的行);

① grep:在终端输入命令grep '^ *#' SYM.sh,命令解释如下:

  • grep:命令行文本搜索工具。
  • ^:表示匹配行的开头。
  • *:表示匹配0个或多个空格。
  • #:表示匹配#字符。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

② sed:在终端输入命令sed -n '/^\s*#/p' SYM.sh,命令解释如下:

  • sed:流编辑器。
  • -n:表示只输出匹配的行。
  • /^\s*#/p:正则表达式,表示匹配以0个或多个空格开头,紧接着是#号的行,并将其打印出来。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理  

③ awk:在终端输入命令awk '/^[[:space:]]*#/' SYM.sh,命令解释如下:

  • awk:文本处理工具。
  • /^[[:space:]]*#/:正则表达式,表示匹配以0个或多个空格开头,紧接着是#号的行。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(2)显示去除了所有注释行的内容;

① grep:在终端输入命令grep -v '^ *#' SYM.sh,命令解释如下:

  • grep:命令行文本搜索工具。
  • -v:表示显示不匹配的行,也就是去除匹配的行。
  • ^:表示匹配行的开头。
  • *:表示匹配0个或多个空格。
  • #:表示匹配#字符。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

② sed:在终端输入命令sed '/^\s*#/d' SYM.sh,命令解释如下:

  • sed:流编辑器。
  • /^\s*#/d:正则表达式,表示匹配0个以或多个空格开头,接着是#号的行,并将其删除。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

③ awk:在终端输入命令awk '!/^[[:space:]]*#/' SYM.sh,命令解释如下:

  • awk:文本处理工具。
  • !/^[[:space:]]*#/:正则表达式,表示不匹配以0个或多个空格开头,紧接着是#号的行。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(3)显示所有的(去掉注释和空行)有效行。

① grep:在终端输入命令grep -v -E '^\s*($|#)' SYM.sh,命令解释如下:

  • grep:命令行文本搜索工具。
  • -v:表示显示不匹配的行,也就是去除匹配的行。
  • -E:表示使用扩展的正则表达式。
  • ^\s*($|#):正则表达式,表示匹配空行或以0个或多个空格开头,紧接着是#号的行,并将其删除。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

② sed:在终端输入命令sed '/^[[:space:]]*#/d;/^$/d' SYM.sh,命令解释如下:

  • sed:流编辑器。
  • /^[[:space:]]*#/d:正则表达式,表示匹配以0个或多个空格开头,紧接着是#号的行,并将其删除。
  • /^$/d:表示匹配空行,并将其删除。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

③ awk:在终端输入命令awk '!/^[[:space:]]*(#|$)/' SYM.sh,命令解释如下:

  • awk:文本处理工具。
  • !/^[[:space:]]*(#|$)/:正则表达式,表示不匹配空行或以0个或多个空格开头,紧接着是#号的行。
  • SYM.sh:要搜索的文件名。

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

2. 设计一个shell程序计算n的阶乘。要求:

(1)从命令行接收参数n;

(2)在程序开始后立即判断n的合法性,即是否有参数,若有,是否为正整数,若非法请给错误提示;

(3)最后输出计算的结果。

解:

创建jiechengsh脚本,输入内容如下:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

即:

#!/bin/bash
if [ $# -ne 1 ]; then
    echo "错误:缺少参数!"
    exit 1
fi
n=$1
if ! [[ $n =~ ^[0-9]+$ ]] || [ $n -lt 1 ]; then
    echo "错误:参数必须为正整数!"
    exit 1
fi
fact=1
for (( i=1; i<=$n; i++ )); do
    fact=$(( $fact * $i ))
done
echo "$n 的阶乘是 $fact"

错误测试运行结果为:

 【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理 

输入正整数结果如下:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

3. 练习教材P308 “5. 控制结构”中的sh02.sh~sh06.sh

解:

(1)sh02.sh

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理  

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(2)sh03.sh

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(3)sh04.sh

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(4)sh05.sh

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

(5)sh06.sh

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理

运行结果为:

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理    


🌍4. 实验心得

  1. 掌握grep命令的高效应用: 通过本次实验,我深入了解了grep命令在Linux文本处理中的强大功能。能够熟练使用grep来查找指定模式的字符串,包括查找包含、不包含某个字符串的行,以及通过正则表达式匹配行。这使我在处理大规模文本数据时能够迅速定位所需信息,提高了工作效率。

  2. 熟练应用sed命令进行文本编辑: 通过实践,我掌握了sed命令的流式文本编辑特性,包括替换、删除、插入和追加等操作。能够利用sed对文件进行灵活处理,实现文本中的替换操作、删除指定行、以及去除特定字符。这为我在处理文本数据时提供了更多的选择和便利,增强了对文本内容的掌控能力。

  3. 精通awk命令进行文本分析与报告: 实验使我熟练运用awk命令进行文本分析,输出指定列以及利用内置变量进行更复杂的操作。这让我能够高效地处理结构化文本数据,通过awk命令快速提取所需信息。同时,我对如何在Linux环境下编写bash脚本有了全面的认识,包括基本规则、控制结构、变量定义、条件语句、循环语句和函数的使用,为我进行更复杂的脚本编程奠定了基础。


📝总结

Linux操作系统的领域就像一片未被勘探的信息大海,引领你勇敢踏入开源系统的神秘领域。这是一场独特的学习冒险,从基本概念到系统架构,逐步揭示更深层次的操作系统原理、命令行工具和高级系统管理的奥秘。

渴望挑战Linux操作系统的学习路径和掌握系统管理技术?不妨点击下方链接,一同探讨更多Linux操作系统的奇迹吧。我们推出了引领趋势的💻 Linux专栏:《探秘Linux | 操作系统解密》,旨在深度探索Linux的实际应用和创新。🌐🔍

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战,# 【操作系统】,linux,shell 编程,命令解释器,自动化任务,文本处理文章来源地址https://www.toymoban.com/news/detail-777354.html

到了这里,关于【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

    【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 进程与任务管理的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝

    2024年02月03日
    浏览(11)
  • 【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

    【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 Linux开发工具的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总

    2024年02月03日
    浏览(43)
  • 【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战

    【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 用户、组、密码及权限管理的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4

    2024年02月03日
    浏览(15)
  • Linux操作系统--shell编程(流程控制)

    1.if 条件判断 ①.单分支判断 if [ 条件判断式 ];then 程序 fi 该语法结构还可以写成: if [ 条件判断式 ] then 程序

    2024年02月11日
    浏览(11)
  • Shell命令操作Linux文件系统

    Shell命令操作Linux文件系统

      Linux文件系统是计算机操作系统中的一个关键组成部分,它用于管理和组织计算机上的数据和信息。先到根目录,然后打印当前目录下文件:   有一些比较常用的文件夹介绍如下:    /bin ——包含常见Linux 用户命令,比如 ls、sort、date和l chmod。    /home ——包含分

    2024年02月09日
    浏览(14)
  • linux操作系统中shell和bash

    目录 shell命令以及运行原理 为什么不能直接使用kernel? 总的来说: Linux严格意义上说的是一个操作系统,称之为“核心( kernel )“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的 shell ,来与kernel沟通。 1. 执行命令和程序: 通过Shell,

    2024年02月11日
    浏览(13)
  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(15)
  • 探索操作系统:内核、启动和系统调用的奥秘

    探索操作系统:内核、启动和系统调用的奥秘

    首先,对于有科班背景的读者,可以跳过本系列文章。这些文章的主要目的是通过简单易懂的汇总,帮助非科班出身的读者理解底层知识,进一步了解为什么在面试中会涉及这些底层问题。否则,某些概念将始终无法理解。这些计算机基础文章将为你打通知识的任督二脉,祝

    2024年02月11日
    浏览(11)
  • 【Linux操作系统】【综合实验二 vi应用与shell脚本编辑】【浅试编辑命令】

    【Linux操作系统】【综合实验二 vi应用与shell脚本编辑】【浅试编辑命令】

    要求进一步掌握Linux基础操作,掌握全屏幕编辑命令vi的高级应用,熟悉shell脚本编辑与命令行编辑。 通过这个第二阶段实验,要求掌握以下操作与相关知识: (1)进一步掌握Linux系统的 文件类、目录类、进程管理类与磁盘操作类常用命令 ; (2)了解或掌握Linux系统支持的

    2023年04月22日
    浏览(12)
  • 【linux深入剖析】操作系统与用户之间的接口:自定义简易shell制作全过程

    【linux深入剖析】操作系统与用户之间的接口:自定义简易shell制作全过程

    🍁你好,我是 RO-BERRY 📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 Linux的Shell是一种命令行解释器,它是用户与操作系统内核之间的接口。 通过Shell,用户可以输入命令并与

    2024年03月18日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包