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.rhkb.cn/news/345022.html

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

相关文章

【计算机毕业设计】283基于微信小程序校园订餐

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

用python编撰一个电脑清理程序

自制一个电脑清理程序,有啥用呢?在电脑不装有清理软件的时候,可以解决自己电脑内存不足的情况。 1、设想需要删除指定文件夹中的临时文件和缓存文件。以下是代码。 import os import shutil def clean_folder(folder_path): for root,…

【备战蓝桥杯】蓝桥杯省一笔记:算法模板笔记(Java)

蓝桥杯 0、快读快写模板1、回文判定2、前缀和3、差分4、二分查找5、快速幂6、判断素数7、gcd&lcm8、进制转换9、位运算10、字符串常用API11、n的所有质因子12、n的质因子个数13、n的约数个数14、n阶乘的约数个数15、n的约数和16、阶乘 & 双阶乘17、自定义升序降序18、动…

Java----抽象类和接口

欢迎大家来这次博客-----抽象类和接口。 1.抽象类 1.1 抽象类概念 在Java中我们都是通过类来描述对象,但反过来并不是所有的类都是用来描述对象的。当一个类中没有足够的信息来描述一个具体对象,我们就将该类称为抽象类。 如上图中的Shape类&#xff…

Wireshark自定义Lua插件

背景: 常见的抓包工具有tcpdump和wireshark,二者可基于网卡进行抓包:tcpdump用于Linux环境抓包,而wireshark用于windows环境。抓包后需借助包分析工具对数据进行解析,将不可读的二进制数转换为可读的数据结构。 wires…

SwiftUI五视图动画和转场

代码下载 使用SwiftUI可以把视图状态的改变转成动画过程,SwiftUI会处理所有复杂的动画细节。在这篇中,会给跟踪用户徒步的图表视图添加动画,使用animation(_:)修改器给一个视图添加动画效果非常容易。 下载起步项目并跟着本篇教程一步步实践…

单元测试覆盖率

什么是单元测试覆盖率 关于其定义,先来看一下维基百科上的一段描述: 代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。 简单来理解&#xff…

【Redis学习笔记05】Jedis客户端(中)

Jedis客户端 1. 命令 1.1 String类型 1.1.1 常见命令 SET命令 语法:SET key value [EX seconds | PX milliseconds] [NX|XX] 说明:将string类型的value值设置到指定key中,如果之前该key存在,则会覆盖原先的值,原先…

短剧看剧系统投流版系统搭建,前端uni-app

目录 前言: 一、短剧看剧系统常规款短剧系统和投流版的区别? 二、后端体系 1.管理端: 2.代理投流端 三、功能区别 总结: 前言: 23年上半年共上新微短剧481部,相较于2022年全年上新的454部&#xff0…

C语言王国——数据的内存管理

目录 一、引言 二、整形在内存中的存储 2.1 进制之间的转换 2.1.1 整形的二进制 2.1.2 十进制和二进制 2.1.3 十进制和八进制的转换 2.1.4 十六进制和十进制的转换 2.2 原码,反码,和补码 三、大、小端字节序 3.1 大小端的定义 3.2 为什么会有大…

高考后志愿填报信息采集系统制作指南

在高考的硝烟散去之后,每位学生都面临着一个重要的任务——志愿填报。老师们如何高效、准确地收集和整理这些信息,成为了一个棘手的问题。难道我们只能依赖传统的手工登记方式,忍受其繁琐和易错吗? 易查分是一个简单易用的在线工具…

容器中运行ping提示bash: ping: command not found【笔记】

容器中运行ping提示bash: ping: command not found 原因是容器中没有安装ping命令 在容器中安装ping命令,可以使用以下命令: 对于基于Debian/Ubuntu的容器,使用以下命令: apt-get update apt-get install -y iputils-ping对于基…

上位机图像处理和嵌入式模块部署(f407 mcu和其他mcu品类的选择)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多朋友读书的时候学的是stm32,工作中用的也是stm32。这本来问题不大,但是过去两三年的经历告诉我们,mcu的使用…

音频数据上的会话情感分析

情感分析,也被称为观点挖掘,是自然语言处理(NLP)中一个流行的任务,因为它有着广泛的工业应用。在专门将自然语言处理技术应用于文本数据的背景下,主要目标是训练出一个能够将给定文本分类到不同情感类别的模型。下图给出了情感分类器的高级概述。 例如,三…

牛客热题:最长公共子序列Ⅱ

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:最长公共子序列Ⅱ题目链接方法一…

网络安全形势与WAF技术分享

我一个朋友的网站,5月份时候被攻击了,然后他找我帮忙看看,我看他的网站、网上查资料,不看不知道,一看吓一跳,最近几年这网络安全形势真是不容乐观,在网上查了一下资料,1、中国信息通…

vue2的form利用插槽修改错误提示UI

1. 需求 很多时候我们使用el-form想修改下错误提示的UI,比如table中使用form校验这类场景下错误提示的UI调整就非常重要。 2. 了解文档 Form-Item Scoped Slot name说明error自定义表单校验信息的显示方式,参数为 { error } 3.实际使用 html里使用…

Python Flask实现蓝图Blueprint配置和模块渲染

Python基础学习: Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用Python 模块Python 魔法方法与属性 Flask基础学习: Python中如何选择Web开发框架?Pyth…

数据结构笔记 4 树和二叉树

二叉树和完全二叉树的区别? 二叉树和完全二叉树的主要区别在于它们的结构特性和节点排列方式: 1. **二叉树**: - 是一种数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。 - 节点的子节点数量…

git凭证

默认是manager # 将凭证缓存到内存中,默认缓存15分钟 git config --global credential.helper cache# 将凭证存储到磁盘上的纯文本文件中 git config --global credential.helper store# 使用 Git 凭证管理器 git config --global credential.helper manager-core查…