Shell脚本学习_内置命令

news2024/11/26 9:33:42

目录

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.coloradmin.cn/o/1805676.html

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

相关文章

详解SM3算法加密流程(SM3加密算法一)

1、SM3 算法简介 SM3是中国国家密码管理局发布的消息摘要算法,首次发布于2010年,并于2016年发布了正式的国家标准GB/T 32905-2016。类似于国际上广泛应用的SHA-256算法,但有其独特的设计和实现细节。 该算法应用于各种数据加密和验证场景&…

【NI国产替代】产线综测仪:锂电池保护板测试仪,支持快速定制

• 精度等级01% • 支持直流电压、电流、nA 级待机电流电阻等,常规测试 • 支持过压、欠压、过冲、过放、过温,短路等,保护测试 • 通讯总线电平可编程,兼容多种 • 支持 SWD 或IIC 固件烧录 • 测试速度快,支持最多 24 通道…

Windows关闭自动更新最有效的方法

按WR打开电脑命令框输入“regedit”进入注册表 依次点击以下几个 右击新建一个“DWORD(32位)值”,命名为”FlightSettingsMaxPauseDays“ 右边选择十进制,左边填写暂停更新的天数 打开windows更新,进入高级选项 选择暂停更新的天数&#xff…

数据库(27)——多表查询——自连接

语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...; 自连接可以是内连接查询也可以是外连接查询。 演示 我新增了字段friend便于演示 查询所有人的名字以及他们的friend的人的名字: select a.name,b.name from user a,user b where a.friendb.id; 其…

L48---1637. 两点之间不包含任何点的最宽垂直区域(排序)---Java版

1.题目描述 2.思路 (1)返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。 我的理解是相邻两个点,按照等差数列那样,后一个数减去相邻的前一个数,才能保证两数之间不含其他数字。 (2)所以&…

kali2022安装教程(附安装包)

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

CUDA 编程(1):使用Grid 和 Block分配线程

1 介绍 1.1 Grid 和 Block 概念 核函数以线程为单位进行计算的函数,cuda编程会涉及到大量的线程(thread),几千个到几万个thread同时并行计算,所有的thread其实都是在执行同一个核函数。 对于核函数(Kernel),一个核函数一般会分配1个Grid, 1个Grid又有很多个Block,1个Bloc…

IO流(缓冲流)

1.字节缓冲流 原理:字节缓冲输入流自带8KB缓冲池;字节缓冲输出流自带8KB缓冲池 public static void main(String[] args) throws IOException {try(InputStream is new FileInputStream("D:\\pt\\123.jpg");//1.定义一个字节缓冲输入流包装原始的字节输…

看似不同的事情,却是相同的坑

目录 一、背景二、过程1.遭遇战-微盘股的下杀2.不失为一件好事3.一切向后看吧,最近的学习感受4.该有的心境 三、总结 一、背景 也在一点点改变,期间势必要经历流血的过程;所谓无疯狂不成长,积极的心态去应对,去总结总…

数据分析常用模型合集(一)AARRR模型和漏斗模型

准备把常用的数据分析模型,像什么AARRR,RFM之类的,逐个全部写一下; 最好能带点案例和代码,搞一个小合集。 最终达到完全不懂的人,看完就能知道得差不多; 数据分析常用模型合集(二…

中心极限定理的MATLAB例

独立同分布的中心极限定理: 设 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1​,X2​,…,Xn​ 是独立同分布的随机变量序列,且 E ( X i ) μ E(X_i) \mu E(Xi​)μ, D ( X i ) σ 2 > 0 D(X_i) \sigma^2 > 0 D(Xi​)σ2>0&a…

再读高考作文题

新课标I卷:讨论了随着互联网和人工智能的普及,问题是否会变得越来越少,要求考生写一篇文章,表达自己对于这一现象的联想和思考。 从来就没有什么救世主 AI也不是​​​​​ 一直不会写作文,直到高中,才堪堪…

ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

AI Agentic Design Patterns with AutoGen(上):顺序对话、代理反思

文章目录 一、多代理对话:单口喜剧1.1 Agent的基本功能1.2 多代理对话示例:单口喜剧1.2.1 创建Agent1.2.2 开始对话1.2.3 查看对话信息,自定义对话摘要1.2.4 设置对话终止条件 二、顺序对话:客户入职2.1 创建Agent2.2 构建顺序对话…

profile-3d-contrib,github三维立体图的使用

图片展示: 参考: https://zhuanlan.zhihu.com/p/681786778 原仓库链接: GitHub - yoshi389111/github-profile-3d-contrib: This GitHub Action creates a GitHub contribution calendar on a 3D profile image. 第一步 在你的个人仓库下找到Actions 第二步 点…

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

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

嘉立创面板制作不规则图案技巧

首先附上效果图展示: 所需软件:嘉立创EDA(专业版)、photoshop、Adobe Illustrator 嘉立创EDA(专业版): 嘉立创面板绘制很容易上手,只要了解这几个图层的作用便可以做出自己想要的面板。 材料边界层: 代表选⽤的材料…

SpringAI的Transform入门

Transform转换 帮助将文档分割以适应 AI 模型的上下文窗口。 假如我们想要用 openai api 对一个段文本进行总结,我们通常的做法就是直接发给 api 让他总结。但是如果文本超过了 api 最大的 token 限制就会报错。这时,我们一般会进行对文章进行分段&#…

Linux线程安全:线程互斥

一、线程互斥的概念 1.1临界资源与互斥的关系 临界资源:多线程执行流共享的资源就叫做临界资源。 临界区:每个线程内部,访问临界资源的代码,就叫做临界区。 互斥:任何时刻,互斥保证有且只有一个执行流进入…

[书生·浦语大模型实战营]——LMDeploy 量化部署 LLM 实践

1.基础作业 1.1配置 LMDeploy 运行环境 创建开发机 创建新的开发机,选择镜像Cuda12.2-conda;选择10% A100*1GPU;点击“立即创建”。注意请不要选择Cuda11.7-conda的镜像,新版本的lmdeploy会出现兼容性问题。其他和之前一样&…