【Linux】09 -- Linux下的shell编程(一)

基础知识与原理

1. Linux下的Shell概述

  Shell的概念最初是在UNIX操作系统中形成和得到广泛应用的,Linux系统继承了UNIX系统中Shell的全部功能。Shell是Linux的一个外壳,它包在Linux内核的外面,为用户和内核之间的交换提供一个接口。

  用户通过终端使用系统,从键盘输入指令和数据,从屏幕得到信息及响应。用户通过终端输入的所有信息都会先传给Shell处理,Shell再把处理过的信息传给内核或程序执行。而系统的响应,也循着相反的方向由Shell传到屏幕上显示给用户。所以当下达指令给操作系统时,其实是把指令告诉Shell,经过Shell解释、处理后才让内核运行。

  Shell具有以下特点,

  (I)把已有命令进行适当组合构成新的命令。

  (2)提供了文件名扩展字符(通配符,如“ * ”、“ ?”、“ [ ] ”),使用单一的字符串可以匹配多个文件名。

  (3)可以直接使用Shell的内置命令,而不需要创建新的进程,如提供的cd、echo、exit、pwd和kill等命令。

  (4)Shell允许灵活地使用数据流、提供通配符、输入/输出以及管道等机制,方便模式匹配、I/O处理和数据传输。

  (5)结构化程序模式,提供了顺序流程控制、条件控制以及循环控制等。

  (6)Shell提供了可配置的环境,允许创建和修改命令、命令提示器和其他的系统行为。

  (7)Shel提供了一种高级的命令语言,能够创建从简单到复杂的程序。

2. Shell使用的符号

  除使用普通键盘可以输入的字符外,Shel中还可以使用一些具有特殊含义和功能的特殊字符,使用它们时,应注意其特殊的含义和作用范围。

  2.1 空白格

  在UNIX/Linux系统中,空格和Tab成为空白格。

  2.2.通配符

  通配符用于模式匹配,如文件名匹配、路径名搜索、字符串查找等。用户可以在作为命令参数的文件名中包括这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。

  (1)“ * ”通配符:代表从它所在位置开始的任何字符串,如“ f*”匹配以f打头的任意字符串。文件名前的圆点“.”和路径名中的斜线“/”必须显示匹配,如“ * ”不能匹配.file,而“.* ”可以匹配.file。

  (2)“ ?”通配符:代表它所在位置上的任何单个字符。

  (3)[ ]:代表一个指定范围的字符,只要文件名中“[ ]”位置处的字符在“[ ]”中指定的范围内,那么这个文件名在此处可以被匹配。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连接字符“组成”。例如f[a-b]与f[abcd]的作用相同。[ ]内的第一个字符若是“ ^ ”或“ ! ”,则为非运算,意为不匹配[ ]内的字符,如f [!a-b]或f[^ a-b]表示不匹配方括号内的a-b的字符集,或匹配[ ]之外的字符集。下面是通配符表

通配符含义
*匹配所有,但不包括以.开头的文件,如包括abc,但不包括.abc
* Text *匹配所有文件名中包括Text的文件名,但不包括以.开头的文件
[ab-dm]*匹配当前目录下所有以a、b、c、d、m开头的文件名
[ab-dm]?匹配所有以a、b、c、d、m开头且后面只跟有一个字符的文件名
[! ab-dm]?或[^ab-dm]?匹配所有不以a、b、c、d、m开头且后面只跟有一个字符的文件名
/dev/hd?匹配目录/dev下所有以hd开头且只有三个字符的文件名

  连字符“-”仅在方括号内且在中间时有效,表示字符范围,若在方括号外面或在方括号内最前或最后就成为普通字符,字符“^”和“!”只有在方括号内且位于开始位置才起“非”的作用,而“ * ”和“ ? ”只在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力,成为普通字符。

  2.3 注释符与注释

  在Shell编程中,经常对某些正文进行注释,以增加程序的可读性,规定以“#”开头的行是注释行。

  2.4 转义宇符

  UNIX/Linux系统中还有一个特殊的字符“\”,用于对某些特殊字符的表示。如下表

特殊字符意义
\a响铃符
\b退格符
\f换页
\n换行
\×??十六进制
\t水平制表符
\v垂直制表符
\ \\
\0???八进制表示
\ ’
\ ""
3. Shell脚本的运行过程

  Shell脚本文件的第一行通常会放置一行特殊的字符串,告诉操作系统使用哪个Shell来执行这个文件。

  如果脚本的前两个字符是“#!”,那么系统会将这两个字符后面的那些字符作为执行该脚本的命令解释器的绝对路径名,该路径可以指定到任何程序的路径名,而不仅仅局限于Shell。如一个Shell脚本程序内容如下:

#!/bin/bash
# filename:bashscript  //指定Shel1脚本名称
echo "这是第一个Shel1程序”

  执行这个Shell脚本可以有三种方法:

  (1)通过chmod命令把文件的权限设置成可读、可执行,然后直接执行该可执行文件,如下所示。

[root@localhost~]# chmod u+x 脚本文件名
[root@localhost~]# ./脚本文件名及其参数

  例如:

 //赋予文件bashscript可执行权限
[root@localhost~]# chmod u+x bashscript
[root@localhost~]# ./bashscript
这是第一个shell程序

  (2)直接使用Shell的启动方式来执行脚本,如下所示。

//也可以使用tcsh、sh
[root@localhost~]# bash 脚本文件名及其参数
[root@localhost~]# tcsh bashscript
这是第一个shell程序

  (3)使用bash内部命令“source”或“.”运行Shell 脚本,如下所示。

[root@localhost~]# source 脚本文件名及其参数
// ”.”和后面的程序名之间要留有空格
[root@localhost~]#. 脚本文件名及其参数

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

69 mysql 中 is null 的实现

前言 Mysql 中我们偶尔会用到 字段为 NULL 的情况 这时候 我们只能使用查询 “select * from tz_test_02 where field1 is null;” 来进行 field1 字段为 null 的行的查询 然后如果是使用 “select * from tz_test_02 where field1 null;” 你会发现查询 不出数据 但是如…

51c嵌入式~单片机合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/12581900 一、STM32代码远程升级之IAP编程 IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Application Programming,解释为在应用中编程,用户自己的程…

网上图书购物管理系统|Java|SSM|VUE| 前后端分离

【一】可以提供远程部署安装,包扩环境 【二】提供软件相关的安装包 【三】如果需要提供java入门资料可咨询 【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、M…

Python酷库之旅-第三方库Pandas(264)

目录 一、用法精讲 1251、pandas.tseries.offsets.WeekOfMonth.is_year_end方法 1251-1、语法 1251-2、参数 1251-3、功能 1251-4、返回值 1251-5、说明 1251-6、用法 1251-6-1、数据准备 1251-6-2、代码示例 1251-6-3、结果输出 1252、pandas.tseries.offsets.Las…

“为您的家电穿上防震铠甲:优质电器缓冲器

在地震频发地区或日常生活中,确保家电的安全和稳定至关重要。为了防止地震、意外碰撞或其他外力对家电造成损害,采用优质的电器缓冲器就像是为家电穿上了一层坚固的“防震铠甲”。这不仅能够有效减少因震动导致的损坏风险,还能显著延长家电的…

全连接层与链式求导法则在神经网络中的应用

目录 ​编辑 引言 全连接层的工作原理 前向传播 反向传播 链式求导法则及其在神经网络中的应用 链式求导法则 应用于全连接层 计算梯度 结论 引言 在深度学习领域,全连接层(Fully Connected Layer,FC)和链式求导法则是…

基于框架的逻辑回归:原理、实现与应用

目录 ​编辑 逻辑回归原理 损失函数与优化 正则化 基于框架的实现 1. 数据预处理 2. 模型初始化与训练 3. 模型评估与调优 4. 特征缩放 逻辑回归的应用 信用评分 医疗诊断 垃圾邮件识别 推荐系统 结论 在机器学习领域,逻辑回归是一种基础且强大的分类…

【SpringBoot】Day11-10 yml文件配置

三种配置文件 前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,那其实呢,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件&#x…

强化学习新突破:情节记忆与奖励机制引领多智能体协作

简介 本推文介绍了韩国科学技术院发表在人工智能顶会ICLR 2024上的论文《Efficient Episodic Memory Utilization of Cooperative Multi-Agent Reinforcement Learning》。该论文提出创新性高效情节记忆利用(Efficient Episodic Memory Utilization,EMU…

【python自动化四】日志打印

我们在进行自动化测试时,需要打印过程日志和结果日志等,这里记录下日志的相关配置。这里我们直接自己新建一个logger。 先贴上日志代码如下,可根据需要修改: import logging import os import timefrom logging.handlers import …

【精选】AI Coding 新范式:Windsurf、Cursor、Coze齐上阵

2AGI.NET | 探索 AI 无限潜力,2AGI 为您带来最前沿资讯。 随着人工智能技术的飞速发展,AI Coding领域迎来了前所未有的变革。Codeium的Windsurf、Cursor的agent模式更新、Copilot的新版本以及Coze的AI应用能力,都在推动着编程领域的创新。本期…

Free-RTOS实现LED闪烁

开发板:正点原子探索者 F407 LED定时定时闪烁 本次实验验证: 配置文件 1、打开CubeMX 2、选择芯片型号,然后点击开始项目 3、配置时钟 配置烧录引脚,与FreeRTOS系统时钟 选择FreeRTOS 这里已经默认有一个任务&#xff…

java+ssm+mysql水产品商城

项目介绍: 使用javassmmysql开发的水产品商城,系统包含管理员、用户角色,功能如下: 管理员:用户管理;种类管理;商品管理;订单管理;评论管理;新闻管理&#…

SYN6288语音合成模块使用说明(MicroPython、STM32、Arduino)

模块介绍 SYN6288中文语音合成模块是北京宇音天下科技有限公司推出的语音合成模块。该模块通过串口接收主控传来的语音编码后,可自动进行自然流畅的中文语音播报。 注:SYN6288模块无法播报英文单词和句子,只能按字母播报英文 ;而…

Windows设备go环境安装配置

一、下载go安装包 官网链接:All releases - The Go Programming Language (google.cn) 安装过程比较简单,这里不再赘述,可参考这位博主的文章。本文重点在环境配置。golang环境详细安装、配置_golang安装-CSDN博客 二、环境变量配置 1.添…

vulnhub靶场【hacksudo】之aliens

前言 靶机:hacksudo-aliens 攻击:kali 都是采用虚拟机的形式,网卡桥接模式 主机发现 使用arp-scan -l或者netdiscover -r 192.168.1.1/24进行探索 信息收集 使用nmap扫描 两个http服务,一个ssh服务 网站信息 访问查看 访…

(数据结构与算法)递归 递归是什么 递归的案例和场景 递归进阶

递归的定义和应用条件 递归就是程序调用自身的编程技巧; 把大型复杂的问题转化为一个与原问题相似规模较小的问题来进行求解; 递归每次调用传入的是不同的变量 递归不是算法,是调用自己的过程 调用的那个是一个小问题,自己是一个…

鼠标右键单击Git Bash here不可用

最近在学习git时突然发现右键的git bash没反应,但是去点击应用图标就能正常运行,通常是因为你在安装git之后改变了它的目录名称或者位置,我就是因为安装后改变了一个文件夹的文件名导致不可用 在安装git时系统会默认给鼠标右键选项的git Bas…

【0x0002】HCI_Inquiry_Cancel命令详解

目录 一、命令概述 二、命令格式及参数说明 三、返回事件及参数说明 3.1. HCI_Command_Complete事件 3.2. Status 3.3. 示例 四、命令执行过程 4.1. 前提条件检查 4.2. 命令构建与发送 4.3. 控制器处理 4.4. 返回状态参数 4.5. 主机接收反馈与处理 4.6. 执行流程结…

OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用

OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用 文章目录 OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用RFT的工作原理与应用领域案例研究:基因突变…