Shell脚本学习_内置命令

目录

1.内置命令介绍:

2.Shell内置命令:alias设置别名

3.Shell内置命令:echo输出字符串

4.Shell内置命令:read读取控制台输入

5.Shell内置命令:exit退出

6.Shell内置命令:declare设置变量


1.内置命令介绍:

Shell内置命令,就是由Bash Shell自身提供的命令,而不是文件系统中的可执行脚本文件

1、使用type来确定一个命令是否是内置命令:

语法:

type 命令

如图:

cd 是内置命令 

其余为脚本文件。

2、内、外置命令区别: 

 内置命令比脚本文件执行速度更快,执行脚本文件时不但会触发磁盘I/O,还需要fork出一个单独的进程来执行,执行完再退出。而内置命令就相当于是调用当前Shell进程的一个函数,还是在当前Shell环境进程内,减少了上下文切换。


2.Shell内置命令:alias设置别名

1、alias介绍:

alias用于给命令创建别名

好处:可以将经常操作比较复杂的命令进行设置别名,通过别名的操作提高工作效率,若该命令不带任何参数,则显示当前Shell进程中的所有别名列表。

如图:

显示当前Shell进程中的所有别名列表。

2、alias别名定义语法:

alias 别名="命令" 

3、unalias别名删除语法:

删除指定别名:

unalias 别名

删除当前Shell环境中的所有别名

unalias -a

注意:以上两种方式删除都是临时删除,如果想要永久删除必须去配置文件中手动删除。

4、alias演示:

创建别名:

删除别名:

 


3.Shell内置命令:echo输出字符串

1、目标:

1.能够echo输出不换行字符串

2.能够使用echo输出转义字符

2、echo输出语法:

默认换行输出语法:

echo 字符串

输出不换行语法:

echo -n 字符串

3、输出演示:

1.创建echo1.sh

touch echo1.sh

2.编辑文件

vim echo1.sh

 3.运行文件

sh echo1.sh

  

4、echo输出转义字符

语法:

echo -e 字符串

'\n'转义字符(换行)

'\c'转义字符(清除结尾换行)与-n作用相同。

用于echo输出字符串非结尾处换行,但是默认echo无法解析/n转义字符,添加了-e之后就可以解析转义字符了。

演示:

 


4.Shell内置命令:read读取控制台输入

1、目标:

理解read命令的作用

使用read给多个变量赋值

使用read读取一个字符

使用read限制时间输入

2、介绍:

read是Shell内置命令,用于标准输入中读取数据并赋值给变量,如果没有进行重定向,默认就是从终端控制台读取用户输入的数据,如果进行了重定向,那么就可以从文件中读取数据。

3、语法:

read [-options] [var1 var2]

options表示选项,var表示用来储存数据的变量。这两个都是可选的,如果没有提供变量名,那么读取到的数据将存放在环境变量REPLY变量中,$REPLY保存read最后一个读入命令的数据。

options支持的参数:

不设置变量名: 

 

有变量名:

 

示例1:多个变量赋值:

需求

使用read命令给多个变量赋值

如图: 

 

示例2:读取一个字符

需求

从控制台只读取一个字符

如图:

 

 

示例3:限制时间输入

需求

在终端控制台输入时,设置指定时间内输入密码

如图:


5.Shell内置命令:exit退出

1、 目标:

掌握exit的应用场景

2、介绍

exit用于退出当前Shell环境进程结束运行,并且可以返回一个状态码,一般使用$?可以获取退出状态码,注意:$?是特殊变量,如想了解、请转至:Shell变量

3、语法:

正确退出语法

exit #默认返回状态码0,一般代表命令执行成功

错误退出语法

exit 非0数字 #数字建议的范围0~255,一般代表命令执行失败

4、exit应用场景:

1.介绍当前Shell进程

2.当Shell进程执行出错退出时,可以返回不同的状态值代表不同的错误

比如:执行一个脚本文件里面操作一个文件时,可以返回1表示文件不存在,2表示文件没有读取权限,3表示文件类型不对

示例:Shell脚本文件中使用exit退出

需求:

编写Shell脚本使用exit退出


6.Shell内置命令:declare设置变量

1、目标

能够使用declare设置变量的属性

能够使用declare查看全部Shell变量与函数

能够使用declare实现索引数组与管链数组变量

2、declare命令作用

设置变量的属性

查看全部Shell变量与函数

实现索引数组与管链数组变量

3、declare设置变量的属性语法

declare [+/-] [aArxif] [变量名称=设置值]

+/-   "-"可以用来指定变量的属性,"+"则是取消变量所设的属性

a   array,设置为普通索引数组

A   Array,设置为key-value关联数组

r   readonlu,设置为只读,也可使用readonly

x   exprot,设置变量为全局变量,也可使用export

i   int,设置为整型变量

f   function,设置为一个函数变量

示例1:设置变量属性

需求

操作一个变量属性,设置为整型\取消整型\设置为只读等操作

4、实现key-value关联数组变量语法

 关联数组也称为“键值对(key-value)"数组,键(key)也即字符串形式的数组下标,值(value)也即元素值,

语法:

declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=2 ....)

declare也可以用于定义普通索引数组,-a 参数创建普通或索引数组-A 创建关联数组

 语法:

declare -a 关联数组变量名=(值1 值2)
declare -a 关联数组变量名=([0]=值1 [1]=值2 ....)

获取指定key的值

${关联数组变量名[key]}

获取所有的值

${关联数组变量名[*] }

${关联数组变量名[@] }

示例2:实现普通索引数组、关联数组 

需求

使用declare定义一个普通数组,并获取打印元素数据的值

如图:

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

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

相关文章

kali2022安装教程(附安装包)

第一步:下载镜像文件 百度网盘下载https://pan.baidu.com/s/1efRQGFTbq6Kgw9axLOmWzg?pwdemxf 第二步:打开Vmware 第三步:进行各项配置 创建新的虚拟机,选择高级,然后下一步 直接默认下一步 选择稍后安装然后下…

设计软件有哪些?效果工具篇(3),渲染100邀请码1a12

这次我们再介绍一批渲染效果和后期处理的工具。 1、ColorCorrect ColorCorrect是一种图像处理技术,用于调整图像的色彩和对比度,使其更加自然和平衡。通过ColorCorrect,用户可以调整图像的色调、亮度、饱和度等参数,以达到理想的效…

kube-promethesu调整coredns监控

K8s集群版本是二进制部署的1.20.4,kube-prometheus对应选择的版本是kube-prometheus-0.8.0 Coredns是在安装集群的时候部署的,采用的也是该版本的官方文档,kube-prometheus中也有coredns的监控配置信息,但是在prometheus的监控页…

kivy 百词斩项目 报错

AttributeError: FigureCanvasKivyAgg object has no attribute resize_event AttributeError: FigureCanvasKivyAgg object has no attribute resize_event 是一种常见的Python错误,当你试图访问一个对象(在这个例子中是 FigureCanvasKivyAgg 对象&am…

二次规划问题(Quadratic Programming, QP)原理例子

二次规划(Quadratic Programming, QP) 二次规划(Quadratic Programming, QP)是优化问题中的一个重要类别,它涉及目标函数为二次函数并且线性约束条件的优化问题。二次规划在控制系统、金融优化、机器学习等领域有广泛应用。下面详细介绍二次规划问题的原理和求解过程 二…

物联网实战--平台篇之(十四)物模型(用户端)

目录 一、底层数据解析 二、物模型后端 三、物模型前端 四、数据下行 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 物联网…

MATLAB数学建模——数据拟合

文章目录 一、简介二、多项式拟合(一)指令介绍(二)代码 三、指定函数拟合(一)指令介绍(二)代码 一、简介 曲线拟合也叫曲线逼近,主要要求拟合的曲线能合理反映数据的基本…

如何有效释放Docker占用的存储空间

随着Docker的广泛应用,我们经常会遇到Docker占用过多存储空间的问题。这可能是由于频繁的镜像拉取、容器创建和删除等操作导致的。本文将介绍几种方法来有效释放Docker占用的存储空间,特别是docker system prune命令的使用。 Docker的存储机制 Docker使…

Linux 36.3 + JetPack v6.0@jetson-inference之目标检测

Linux 36.3 JetPack v6.0jetson-inference之目标检测 1. 源由2. detectnet2.1 命令选项2.2 下载模型2.3 操作示例2.3.1 单张照片2.3.2 多张照片2.3.3 视频 3. 代码3.1 Python3.2 C 4. 参考资料 1. 源由 从应用角度来说,目标检测是计算机视觉里面第二个重要环节。之…

开源项目学习——vnote

一、介绍 vnote是一款免费且开源的markdown编辑器,用C开发,基于Qt框架,windows/linux/mac都能用。 二、编译 $ git clone --recursive https://github.com/vnotex/vnote.git $ cd vnote && mkdir build $ cd build $ cmake ../ $ …

鲜为人知的英伟达创始人:早早退出,身价不如黄仁勋零头

内容提要 普里姆因为婚姻纠纷等个人生活的干扰无法专注在工作上,在成立公司的10年后,也就是2003年宣布退休离开英伟达,并在2006年出售剩余的所有英伟达股份,过上不与外界联系、离群索居的生活,在家中鼓捣着如何“拯救…

UML交互图-协作图

概述 协作图和序列图都表示出了对象间的交互作用,但是它们侧重点不同。序列图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系。协作图则清楚地表示了对象间的关系,但时间顺序必须从顺序号获得。序列图常常用于表示方案&#…

【云原生】基于windows环境搭建Docker

目录 一、Docker Desktop搭建 二、前置准备 2.1开启 Hyper-V 2.2 Hyper-V选项看不到问题解决 2.3 开启或升级wsl 三、安装过程 3.1 下载安装包 3.2 安装 Docker Desktop 3.2.1 Docker 图标一直处于starting状态问题解决 3.3 配置仓库与镜像 3.4 docker功能测试 四、…

HSC Mailinspector loader.php 任意文件读取漏洞复现(CVE-2024-34470)

0x01 产品简介 HSC Mailinspector是一款远程电子邮件检查工具,支持POP3/IMAP4协议。它允许用户远程扫描最新邮件,并进行浏览、垃圾邮件排除、编辑、删除等操作,无需实际登录邮箱。 0x02 漏洞概述 由于HSC Mailinspector /public/loader.ph…

揭秘:币圈黑科技私钥碰撞器的项目教程玩法,外面竟然收费200+

一、前言:探寻币圈私钥探测器神秘面纱 在风华正茂的币圈,不仅有无数高涨或者暴跌的数字货币,更有许多被誉为“黑科技”的工具备受热议。其中,私钥碰撞器就是这些黑科技中的一员,它能够搜索并碰撞出特定地址的私钥&…

【AI 高效问答系统】机器阅读理解实战内容

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

dockerhub不可用临时解决方案

近日,在拉取一些docker hub的镜像的时候死活拉不下来,要么超时,要么无法接站点地址,不管是docker hub,还是国内镜像站,统统都不行了。 经过各大媒体报道,以及自己的亲身验证,才知道&#xff0c…

状态方程ABCD矩阵如何确定例子

状态方程ABCD矩阵如何确定 确定状态空间表示中的状态矩阵A、输入矩阵 B、输出矩阵C 和直通矩阵D,需要从系统的动力学方程出发,并将其转换为状态方程的形式。我们可以通过一个具体的物理系统(如倒立摆系统)来说明这一过程 例子:倒立摆系统 系统描述 考虑一个倒立摆系统…

linux线程的同步与互斥

前面我们讲了线程的概念以及如何创建与控制线程,接下来我们来对线程的细节与线程之间的问题进行一些讲解; 1.线程的互斥 互斥就是相互排斥,我们可以理解为对立竞争不相容;线程的互斥则是线程之间在对于临界资源竞争时相互排斥的…

mathematica中针对三维图中的颜色和填充透明度进行指定

颜色指定使用的命令为:PlotStyle 填充的透明度使用的命令为:FillingStyle 示例代码: Clear["Global*"] Plot3D[{Sin[x^2 y], Sin[x^2 - y]}, {x, -2, 2}, {y, -2, 2}, PlotStyle -> {Directive[Red, Specularity[White, 100…