鸟哥Linux私房菜笔记(三)

鸟哥Linux私房菜笔记(三)

该第三部分和第四部分主要为原书的第十一章(正则表达式与文件格式化处理),第十二章学习shell脚本,第十六章(进程管理与SElinux初探部分),第十七章(认识系统服务),第十九章(启动流程,模块管理与Loader),第二十一章(软件安装:源代码与Tarball).

第十一章正则表达式与文件格式化处理

正则表达式

正则表达式是通过一些特殊字符的排列来查找,删除,替换一行文字或者多行文字,简单来说,正则表达式就是用在字符串的处理的一项表达式。正则表达式不是一个工具程序,而是一个字符串处理的标准程序。正则表达式与通配符是完全不同的,通配符代表的是一个bash的功能。

以下是部分linux正则表达式的示例:(grep的高级用法)

在这里我新建了个txt文件,内容只有五行,然后分别让命令行grep出含有'name'的行,含有'[a-z]'(从a到z任意字母)的行,含有[ll]的行,结果如输出所示。

这就告诉我们在实际操作的时候假如不用Vim该怎么读取文件的各行并输出,可以用如下命令grep -n '' hhh.txt意思就是从hhh.txt中选出含有空白字符的各行。

此外如果要特意指定查找某某行末或者行头的字符,可以用'^'和'$'来执行。

用*和\{n\m}这样的搭配可以指定查找重复的字符。

这里用上个转义符\可以将特殊符号的特殊意义去掉,这里就是仅仅去查找文件中的单引号,结果是没有。

文件的格式化处理

用awk可以使用字段为根据,进行数据的重新整理与输出。

在文件的比对中,可以用diff或cmp进行比对,其中diff主要 用在纯文本文件方面的新旧版本的比对。

printf可以通过一些特殊化符号来将数据进行格式化输出。

第十二章学习shell脚本

shell script更像是早期的.bat文件,最简单的功能就是将许多的用户命令写在一起,使得用户可以用one touch的方法去处理复杂的操作,shell脚本可以被近似的看作是批处理文件,所以不需要编译就可以运行,这让我想起了以前安装ros2下载的鱼香ros小软件就是用了shell脚本。shell脚本可以帮助软件员更好的管理主机,是必备之品。

学习shell脚本在自动化主机管理很有用,管理主机每天的任务就有查询日志文件,跟踪流量,监控用户使用主机状态等等,我在猎聘网站上找到的和Linux相关的工作要求,关键的就是shell编程。

编写第一个shell脚本与执行

#name=hcy
#time=2025.2.2
#this program is an easy test shell script
PATH=/root/hello.sh
export PATH
echo "hello world\a\n"
exit 0

这就是一个最简单的shell脚本,执行后是打印出来hello world.执行可以用:sh hello.sh或者chmod a+x hello.sh;./hello.sh(让我想起了安装conda的时候下载的安装执行脚本,就是用这段抽象的命令给安装完毕了)运行示例如下:

简单的Shell脚本练习

示例如下,主要用到了输入信息和数学运算。

#easy shell script examples
read -p "input date" date #提升输入日期
read -p "input your name" name #提示输入名字
echo -e "\n date is ${date},your name is ${name}\n" #最后打印输出
echo -e $((13/3)) #采用特定格式进行运算
​

判断式的学习

a=500
echo '500MB will be download'
read -p "Continue? [y]or[n]" inputval
if [ "$inputval" = "y" ] || [ "$inputval" = "Y" ]; thenecho "begin download"exit 0
elif [ "$inputval" = "n" ] || [ "$inputval" = "N" ]; thenecho "download failed"exit 0
elseecho "please check the spelling"exit 0
fi
​

在这段示例代码中模拟了平常下载软件的一个片段,保存为.sh即可执行。

read -p "input your choice " choice
case ${choice} in "one")echo "Your choice is one ";;"two")echo "Your choice is two";;"three") echo "Your choice is three";;*)echo "Your usage ${0} {one|two|three}";;
esac
​
​

而上面这段代码展示了调用shell script中的case语法的一个格式,判断输入的选择并输出对应的值。

函数功能的使用

在shell脚本中也有函数功能,可以调用函数来执行输出方便代码编写。下面是个例子:

#!/bin/bash
function printtit () {echo -n "your choice is "
}
echo "this program will check your spelling"
case "${1}" in"one")printtit; echo "${1}";;"two")printtit; echo "${1}";;"three")printtit; echo "${1}";;*)echo "usage: ${0} {one|two|three}";;
esac
​

在里面定义了个函数,并在后面调用,要注意在这里执行这段脚本的命令是:bash filename.sh而非用sh filename.sh在这方面的简单解决办法是把报错和代码喂给AI(deepseek最管用)。

循环功能的使用

下面这段代码是只要用户不输入yes就不断的打印请输入

#!/bin/bash
while [ "${yn}" != "yes" -a "${yn}" != "YES" ]
doread -p "please input yes/YES to stop: " yn
done
echo "OK"

执行效果如下,提到这里要注意的是,shell语法对缩进和空格特别敏感,"${yn}"和[间一定要有空格。

下面是执行for循环进行一个简单的相加操作。

#!/bin/bash
read -p "input a number" nu
s=0
for (( i=1; i<=${nu} ; i=i+1 ))
do s=$((${s}+${i}))
​
done
echo "the result is ${s}"

执行的结果如下所示:

总结

shell script是我到现在学过的一门很特殊的编程语言,其特点是编程格式非主流,对空格等要求极为敏感,上面的这些例子不过是一些入门的了解,shell学好才算是Linux从会用到略懂垮了一个门槛。

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

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

相关文章

基于springboot+vue的哈利波特书影音互动科普网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.12 连续数组:为什么contiguous这么重要?

2.12 连续数组&#xff1a;为什么contiguous这么重要&#xff1f; 目录 #mermaid-svg-wxhozKbHdFIldAkj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wxhozKbHdFIldAkj .error-icon{fill:#552222;}#mermaid-svg-…

【网络】3.HTTP(讲解HTTP协议和写HTTP服务)

目录 1 认识URL1.1 URI的格式 2 HTTP协议2.1 请求报文2.2 响应报文 3 模拟HTTP3.1 Socket.hpp3.2 HttpServer.hpp3.2.1 start()3.2.2 ThreadRun()3.2.3 HandlerHttp&#xff08;&#xff09; 总结 1 认识URL 什么是URI&#xff1f; URI 是 Uniform Resource Identifier的缩写&…

力扣第149场双周赛

文章目录 题目总览题目详解找到字符串中合法的相邻数字重新安排会议得到最多空余时间I3440.重新安排会议得到最多空余时间II 第149场双周赛 题目总览 找到字符串中合法的相邻数字 重新安排会议得到最多空余时间I 重新安排会议得到最多空余时间II 变成好标题的最少代价 题目…

HTB:Alert[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ffuf对alert.htb域名进行子域名FUZZ 使用go…

96,【4】 buuctf web [BJDCTF2020]EzPHP

进入靶场 查看源代码 GFXEIM3YFZYGQ4A 一看就是编码后的 1nD3x.php 访问 得到源代码 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;用于调试或展示代码结构 highlight_file(__FILE__); // 关闭所有 PHP 错误报告&#xff0c;防止错误信息泄露可能的安全漏洞 erro…

吴恩达深度学习——有效运作神经网络

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…

【xdoj-离散线上练习】T251(C++)

解题反思&#xff1a; 开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤&#xff01;看到输入m, n和矩阵&#xff0c;注意不能想当然地认为就是高m&#xff0c;宽n的矩阵&#xff0c;细看含义 比如本题给出了树的邻接矩阵&#xff0c;就是n*n的&#xff0c;代码实现中没有用到m这…

deep seek R1本地化部署及openAI API调用

先说几句题外话。 最近deep seek火遍全球&#xff0c;所以春节假期期间趁着官网优惠充值了deep seek的API&#xff0c;用openAI的接口方式尝试了下对deep seek的调用&#xff0c;并且做了个简单测试&#xff0c;测试内容确实非常简单&#xff1a;通过prompt提示词让大模型对用…

01.双Android容器解决方案

目录 写在前面 一&#xff0c;容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups&#xff08;Control Groups&#xff09; 1.1.3 联合文件系统&#xff08;Union File System&#xff09; 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署&#xff08;CI/…

Python 绘图工具详解:使用 Matplotlib、Seaborn 和 Pyecharts 绘制散点图

目录 数据可视化1.使用 matplotlib 库matplotlib 库 2 .使用 seaborn 库seaborn 库 3 .使用 pyecharts库pyecharts库 注意1. 确保安装了所有必要的库2. 检查Jupyter Notebook的版本3. 使用render()方法保存为HTML文件4. 使用IFrame在Notebook中显示HTML文件5. 检查是否有其他输…

无人机集群新年祝福表演技术原理详解

无人机集群新年祝福表演技术是一项集飞行控制技术、智能协调和精密控制于一体的高科技表演形式。其技术原理主要涉及无人机硬件设备、软件系统以及表演协调等多个方面。以下是对该技术原理的详细解析&#xff1a; 一、无人机硬件设备 无人机集群表演的核心是无人机本身&#x…

贪吃蛇实现

1.资料来源 https://learn.microsoft.com/zh-cn/windows/console/getstdhandle 2.前言 简介 贪吃蛇是久负盛名的游戏&#xff0c;和俄罗斯方块、扫雷等游戏位列于经典游戏的行列。 《贪食蛇》中玩家控制一条不断移动的蛇&#xff0c;在屏幕上吃掉出现的食物。每吃掉一个食物…

计算机毕业设计Python动漫推荐系统 漫画推荐系统 动漫视频推荐系统 机器学习 bilibili动漫爬虫 数据可视化 数据分析 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

MyBatis-Plus笔记-快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

《OpenCV》——图像透视转换

图像透视转换简介 在 OpenCV 里&#xff0c;图像透视转换属于重要的几何变换&#xff0c;也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。 原理 实现步骤 选取对应点&#xff1a;要在源图像和目标图像上分别找出至少四个对应的点。这些对…

克隆OpenAI(基于openai API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…

用 HTML、CSS 和 JavaScript 实现抽奖转盘效果

顺序抽奖 前言 这段代码实现了一个简单的抽奖转盘效果。页面上有一个九宫格布局的抽奖区域&#xff0c;周围八个格子分别放置了不同的奖品名称&#xff0c;中间是一个 “开始抽奖” 的按钮。点击按钮后&#xff0c;抽奖区域的格子会快速滚动&#xff0c;颜色不断变化&#xf…

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的&#xff1f;如何监控和调整Elasticsearch ILM策略的性能&#xff1f; 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…