1.Shell编程自动化之Shell编程基础

news2024/11/14 3:05:46

一、Shell可以用来做什么

1.自动化批量系统初始化程序;

2.自动化批量软件部署程序;

3.应用程序管理;

4.日志分析处理程序;

5.自动化备份恢复程序;

6.自动化信息采集及监控程序;

7.自动化管理程序;

二、Shell概述

1.Shell是操作系统的外壳,是用户操作系统的命令接口,是一个介于用户和系统内核之间的桥梁。Shell接受用户以命令方式输入的命令(包括系统提供的内部命令、独立存在于某个目录下的程序),也能解释执行由Shell命令编写的Shell程序。Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。

在这里插入图片描述

2.Shell脚本就是将完成一个任务的所有的命令按照执行的先后程序,自上而下写入到一个文本文件中,然后给予执行权限。Shell语言编写的程序仅能在使用UNIX和Linux的计算机上使用。

3.Shell脚本中支持绝大多数编程语言中所能见到的程序控制结构,可以使用注释(“#”)对脚本的功能进行说明,可以使用条件测试表达式进行分支判断,可以使用循环语句处理大量数据,可以定义使用变量、数组等。Shell脚本也提供对函数的支持。Shell脚本是解释执行而不是编译执行。Shell编程的实质是连续自动执行一系列命令。

4.Shell是一个功能强大的计算环境,既可以将其作为命令解释器,也可以将其作为编程语言。Shell的功能主要包括以下几个方面。

接受来自键盘的命令;

  • 检查命令的正确性;
  • 命令错误则给出报错信息;
  • 命令正确则使用相应的系统调用执行命令(产生进程);
  • 命令执行完毕,给出命令执行的结果;

5.Shell脚本具有如下优点:

  • 一次性完成目标;
  • 不用重复键入一系列命令;
  • 简化用户的操作;

三、Shell基础知识

最常用的Shell包括Bourne Again Shell 、Bourne Shell、C Shell 、Korn Shell和Perl Shell等。下面均以流行的Bourne Again Shell 为例说明。Bourne Again Shell (简称Bash)是Linux默认的Shell,也是最流行的一种Shell,各个版本的UNIX和Linux几乎都支持Bash。UNIX、Linux都是区分大小写的,Shell脚本同样也是区分大小写的。

1.I/O重定向

在Linux系统中,数据流可分为3类:

  • 数据输入
  • 数据输出
  • 错误输出

标准输入通常是指传给一个命令的键盘输入。标准输出是一个命令的执行结果,通常标准输出被定向到显示器。可以利用管道把这些数据流之一输送给另外一条命令,也可以利用I/O重定向把这些数据流之一重定向到一个文件。管道和I/O重定向是Linux系统中特有的概念。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另外一个命令的输入,其代表符号是“|”。所谓I/O重定向是指将命令执行结果重新导出到其他设备或文件(以“>”或“>>”来表示),或是重新导入到其他设备或文件(以“<”或“<<”来表示)。常用的输入输出重定向命令格式与执行结果如下图所示:

在这里插入图片描述

管道符实例:

利用管道将"ls -al"命令的输出结果输入到more 或less命令,可以实现分页显示,命令如下:

`

#ls -al /etc | less

`

输出重定向实例:

1).以覆盖方式把正确输入和错误输入都保存在同一个文件中
命令 &> 文件

2).以追加方式把正确输入和错误输入都保存在同一个文件中
命令 &>> 文件

在这里插入图片描述

3).以追加方式把正确输入保存在文件1中,把错误输入保存在文件2中
命令 >> 文件1 2>> 文件2

在这里插入图片描述

2.Shell通配符

Shell中支持使用通配符,常用的通配符如下所示:

?:表示任意的单个字符;

*:表示任意长度的任意字符串;

[ ]:表示匹配放在[ ]中的字符集中的任意一个字符;

{ }:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件;

3.单引号、双引号及反引号

Shell中使用三种引号:双引号、单引号和反引号。其中,双引号对字符串中出现的“$”、““””、“`”和“\”进行替换;单引号不进行替换,将字符串作为普通字符串输出;反引号会将字符串作为命令执行,并返回执行的结果。其具体含义如下所示。

双引号(“ ”):在双引号中的字符,除了“$”、““””、“`”和“\”以外的所有字符都被解释成字符本身。

单引号(’ '):在单引号中的所有特殊字符(如“$”、““””、“`”和“\”)都失去特殊意义,而成为普通字符。

反引号(` `):在反引号中的字符被解释成命令,例如,`cmd`会被解释成命令cmd执行的结果。

4.指定使用的Shell

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

创建test.sh文件,输入下面内容:

#!/bin/bash

echo "hello world"

5.运行脚本

运行脚本有三种方法:

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

chmod u+x 脚本文件名    或  chmod 755 脚本文件名
./脚本文件名及其参数

(2)、直接使用Shell的启动命令来执行脚本。

bash 脚本文件名及其参数

(3)、使用bash内部命令“source”或“.”运行Shell脚本。

source 脚本文件名及其参数
或
. 脚本文件名及其参数

注:“.”和后面的程序名称之间要留有空格

bash实例如下:

在这里插入图片描述
在这里插入图片描述


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

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

相关文章

Python数据结构-----leetcode232.用栈实现队列

目录 前言&#xff1a; 方法讲解 示例&#xff1a; 代码实现 232. 用栈实现队列 前言&#xff1a; 我们都知道队列的特征是先进先出&#xff0c;就跟排队一样先到先得&#xff0c;而栈的特征是后进后出&#xff0c;那这里我们怎么去通过两个栈来实现一个队列的功能呢&#xf…

GitHub和Gitee的源码下载

1.使用clone命令下载 如果本地安装了Git环境的话&#xff0c;可以直接在命令行中使用git clone命令把仓库中的文件全部下载到本地。 通过GitHub下载源码&#xff0c;执行如下命令&#xff1a; git clone https://github.com/******.git其中后面下载链接可以从项目下图处查看:…

excel动态获取sheet页单元格内容

1、问题描述 如下图所示&#xff0c;名称列可能是动态赋值的&#xff0c;名称列的内容有对应新的sheet页&#xff0c;如名称为PJ1及其PJ1的sheet页&#xff0c;最终需要获取PJ1的sheet页的B1单元格的内容。 如下图所示&#xff0c;是要获取PJ1的sheet页的B1的值。 2、解决办法…

Qt音视频开发33-vlc和mpv打开后鼠标打圈圈问题的解决

一、前言 如果采用的vlc句柄模式,如果鼠标停留在句柄控件中会发现在打开后鼠标打圈圈,mpv句柄模式是在关闭后鼠标打圈圈,这两者真是一前一后,这种给人的体验其实很不友好的,播放开始后或者播放完成后鼠标指针居然变成了繁忙,但是当你将鼠标位置从句柄控件中移到外面的时…

瑟瑟发抖吧~OpenAI刚刚推出王炸——引入ChatGPT插件,开启AI新生态

5分钟学会使用ChatGPT 插件&#xff08;ChatGPT plugins&#xff09;——ChatGPT生态建设的开端ChatGPT插件是什么OpenAI最新官方blog资料表示&#xff0c;已经在ChatGPT中实现了对插件的初步支持。插件是专门为以安全为核心原则的语言模型设计的工具&#xff0c;可帮助ChatGPT…

电脑CPU/GPU处理器知识普及

处理器知识普及 处理器主要分为两种&#xff1a;CPU与GPU&#xff0c;二者针对不同的业务进行工作&#xff1b; CPU主要处理数量小、难度大的任务&#xff0c;能比较好的处理单线程任务&#xff1b; GPU主要处理数量达&#xff0c;难度小的任务&#xff0c;比如图形渲染、多线…

C语言实现三子棋教学

本篇博客会教你如何使用C语言实现三子棋。主要包含以下步骤&#xff1a; 初始化棋盘。打印棋盘。玩家下棋。电脑下棋。判断输赢 0.预备工作 先定义一些符号&#xff0c;后面会用到。主要是棋盘的大小&#xff08;行数列数&#xff09;&#xff0c;以及棋子。 #define ROW …

skvideo.io.vread无法读取视频(九天毕生版)

Vread无法读取视频 使用九天GPU时遇到的错误以及解决方法: 、vread无法读取视频 需要下载ffmpeg的exe&#xff08;从网上找&#xff09; 下载ffmpeg.exe&#xff08;一共三个&#xff09;后将exe的上级目录&#xff08;bin&#xff09;文件路径添加到系统路径中&#xff08;…

Grounding DINO-开集目标检测论文解读

文章目录摘要背景算法3.1Feature Extraction and Enhancer3.2. Language-Guided Query Selection3.3. Cross-Modality Decoder3.4. Sub-Sentence Level Text Feature3.5. Loss Function实验4.2 Zero-Shot Transfer of Grounding DINOCOCO数据集LVIS数据集ODinW&#xff0c;开放…

超级账本与区块链应用场景

文章目录 区块链3.0去中心化应用的新需求区块链技术在行业应用中的条件区块链3.0架构与超级账本 区块链3.0架构 超级账本(Hyperledger Fabric)超级账本的项目FabricFabric的典型运行模型在Fabric中完成一次交易的整体步骤Fabric的节点 链码(Chaincode)数字身份证书组织通道 区块…

Java之 重载 重写的区别

重载 在同一个类中&#xff0c;多个方法有相同的方法名&#xff0c;但参数列表不同&#xff0c;这种同名不同参的方法就是重载重写 子类在继承父类方法的基础上&#xff08;方法名和参数列表相同&#xff09;&#xff0c;对父类方法的实现进行覆盖的操作叫重写规则 重载的规则…

【详细教程】国内部署ChatGPT镜像网站

文章目录 一、准备阶段0、注册Open AI账号1、创建API密钥2、国内云服务器3、国外云服务器4、镜像网站代码5、效果重要&#xff1a;部署时会修改glibc库&#xff0c;为了防止云服务器被搞坏&#xff0c;请提前进行备份或者创建快照重要&#xff1a;部署时会修改glibc库&#xff…

Echarts 如何添加页脚元素

要在 Echarts 图表中添加页脚元素&#xff0c;可以通过在 Echarts 实例的配置对象中添加 graphic 元素来实现。graphic 元素是一个数组形式的配置项&#xff0c;可以通过其中的 text 元素添加文字&#xff0c;rect 元素添加矩形&#xff0c;image 元素添加图片等&#xff0c;从…

JavaSE注解

注解分类和说明点 注解&#xff1a;可对程序做解释可被其他程序读取 元注解&#xff1a;Target&#xff1a;表明注解的使用范围&#xff0c;Retention&#xff1a;表示要在什么级别保存注解信息&#xff0c;Document&#xff0c;Inherited 自定义注解&#xff1a;interface …

一文说透安全沙箱技术

在数字经济的东风中&#xff0c;数据安全至关重要。目前已经颁布了包括《数据安全法》、《个人信息保护法》和《数据安全管理办法》在内的国家政策&#xff0c;以促进整个数据要素的发展。 而近年来&#xff0c;随着移动应用程序的普及和小程序技术的崛起&#xff0c;安全沙箱…

RB-PEG-MAL,罗丹明-聚乙二醇-马来酰亚胺;Rhodamine PEG Maleimide;RB-PEG2000-MAL

RB-PEG-MAL,罗丹明-聚乙二醇-马来酰亚胺 中文名称&#xff1a;罗丹明-聚乙二醇-马来酰亚胺 英文名称&#xff1a;Rhodamine PEG Maleimide RB-PEG-MAL 性状&#xff1a;粉红色或暗红色固体或者液体,取决于分子量。 溶剂&#xff1a;溶于大部分有机溶剂,在水中有很好的溶解…

( “树” 之 BFS) 513. 找树左下角的值 ——【Leetcode每日一题】

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 […

2020年团体程序设计天梯赛-模拟赛

L1-5 判断题 判断题的评判很简单&#xff0c;本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。 输入格式&#xff1a; 输入在第一行给出两个不超过 100 的正整数 N 和 M&#xff0c;分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数&#xf…

ChatGPT和Claude 对比测试(以Review MLIR Codegen代码为例)

Claude在MLIR代码分析上完全超越了ChatGPT并表现十分惊艳&#xff0c;请阅读全文或者自己注册感受它的强大。 0x0. 前言 这里将以oneflow IR部分中的一个Codegen任务&#xff08;目标是在mlir codegen中支持oneflow stream&#xff0c;用oneflow stream替换pass中自己生成的st…

10个前端开发者需要掌握的DOM技巧

Web开发不断发展&#xff0c;掌握最新的趋势和最佳实践对每位开发者来说都至关重要。Web开发的最重要方面之一就是使用文档对象模型&#xff08;DOM&#xff09;。这篇文章中&#xff0c;小蓝将与大家共同探讨10个必须掌握的DOM技巧&#xff0c;帮助您成为更高效、更有效的开发…