shell内置命令

目录

  • 内置命令介绍
  • 内置命令列表
    • alisa内置命令
      • alias别名定义语法
      • unalias 别名删除语法
      • alias演示
    • echo内置命令
      • echo命令介绍
      • echo输出语法
      • echo输出转义字符
    • read内置命令
      • 介绍
      • 语法
      • options支持的参数
      • 示例1:多个变量赋值
    • exit内置命令
      • 介绍
      • 语法
      • 示例:Shell脚本文件中使用exit退出
      • 演示
    • declare内置命令
      • 介绍
      • 语法
      • 示例1:设置变量属性
      • 演示
      • 示例2:查看当前Shell所有函数名
      • 示例3:实现普通索引数组

内置命令介绍

Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统中的可执行文件。
使用type 来确定一个命令是否是内置命令:
在这里插入图片描述
从上往下看,第一行的ifconfig是可执行文件,第二行也是可执行文件,第三行的cd才是内嵌命令

通常来说,内置命令会比外部命令执行得更快,执行外部命令时不但会触发磁盘 I/O,还需要 fork 出一个单独的进程来执行,执行完成后再退出。而执行内置命令相当于调用当前 Shell 进程的一个函数, 还是一个进程, 减少了上下文切换。

内置命令列表

这里简单的列一个列表,方便以后的查询,主要是学习黄色部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

alisa内置命令

在这里插入图片描述
这里主要可以着重看一下ll这个命令,他其实就是ls -l然后用的alisa内置命令改了一个名字便于操作

alias别名定义语法

alias 别名='命令'

unalias 别名删除语法

删除指定的别名

unalias 别名

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

unalias -a

注意:以上2种方式删除都是临时删除当前Shell的别名, 如果想永久删除必须去配置文件中手动删除

alias演示

输出所有进行信息

ps -aux

在这里插入图片描述

给上面的命令起别名为psList, 并使用psList输出
在这里插入图片描述
删除psList别名
在这里插入图片描述

echo内置命令

echo命令介绍

echo 是一个 Shell 内置命令,用于在终端输出字符串,并在最后默认加上换行符

echo输出语法

默认输出换行语法

echo 字符串

输出不换行语法

echo -n 字符串

输出演示
1.创建echo1.sh

touch echo1.sh

2.编辑文件内容并保存

vim echo1.sh

文件内容

#!/bin/bash
echo "hello"
echo "world"
echo -n "itheima "
echo -n "shell "

3.运行echo1.sh文件观察效果
在这里插入图片描述

echo输出转义字符

/n 转义字符

用于echo输出字符串非结尾处的换行, 但是默认echo无法解析 /n 转义字符

演示

在这里插入图片描述

这里的意思是echo输出\n转义字符是无效的,必须通过一下的参数来进行相应的转义

-e 参数

-e 参数用于解析转义字符

echo -e '字符串中含有转义字符'

演示
在这里插入图片描述

/c 转义字符

/c 用于强制清除echo的结尾换行输出

演示:

这里是引用

read内置命令

介绍

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

语法

read [-options] [var1 var2 ...]

options 表示选项,如下表所示; var 表示用来存储数据的变量,可以有一个,也可以有多个。
options 和 var 都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量 REPLY中。

options支持的参数

在这里插入图片描述

示例1:多个变量赋值

需求

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

步骤

1.创建文件read1.sh
2.编辑文件, 编写read命令提示用户输入多个信息个多个变量赋值, 保存文件
3.执行read1.sh文件

演示
创建文件

touch read1.sh
vim read1.sh

read1.sh文件内容

#!/bin/bash
read -p "请输入姓名,年龄,爱好: " a b
echo ${a} ${b}

运行效果
在这里插入图片描述
示例2:限制时间输入
需求

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

步骤

  1. 创建文件read3.sh
  2. 编辑文件内容编写, 使用read命令 -t seconds 限制输入时间, 使用 -s 静默模式输入密码
  3. 执行文件

演示
创建文件

touch read3.sh

编辑文件

vim read3.sh

read3.sh文件内容

#!/bin/bash
read -t 20 -sp '请输入密码(20秒内):' pwd1
printf '\n'
read -t 20 -sp '请再次输入密码(20秒内):' pwd2
printf '\n'
if
[ $pwd1 == $pwd2 ]
then
echo '密码与确认密码一致, 验证通过'
else
echo '密码与确认密码不一致,验证失败'
fi

执行文件运行效果
在这里插入图片描述

exit内置命令

介绍

exit 用于退出当前 Shell 进程结束运行,并返回一个退出状态;使用 $? 可以接收这个退出状态. exit命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是 0。 一般情况下,退出状态为 0 表示成功,退出状态为非 0表示执行失败(出错)了。

语法

正确退出语法

exit

错误退出语法

exit 非0数字 # 介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败

exit应用场景

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

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

需求

编写Shell脚本使用exit 退出, 退出时返回一个非0数字状态值, 执行脚本文件并打印返回状态值

步骤

编辑exit.sh文件, 使用 exit 数字 退出结束当前Shell
执行文件,打印返回状态值

演示

创建文件

touch exit.sh

编辑文件

vim exit.sh

exit.sh文件内容: 使用 exit 数字 退出结束当前Shell

#!/bin/bash
echo 'one'
exit 6
echo 'two'

运行效果

在这里插入图片描述

declare内置命令

介绍

declare命令用于声明 shell 变量。可用来声明变量并设置变量的属性,也可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

declare命令作用

1.declare设置变量的属性
2.查看全部Shell变量与函数
3.实现关联数组变量
不同于普通数组, 关联数组的下标是字符串, 通过字符串下标操作数据

语法

declare [+/-][aArxif][变量名称=设置值]
+/- "-“可用来指定变量的属性,”+"则是取消变量所设的属性。
a 设置为普通索引数组
A 设置为key-value关联数组
r 将变量设置为只读, 也可以使用readonly
x 设置变量成为环境变量,也可以使用export
i 设置为整型变量。
f 设置为一个函数变量

2.查看全部Shell变量与函数定义语法

declare [-fF]

declare 后无参数, 查询全部Shell变量与函数定义
-f 仅查询显示函数定义。
-F 仅查询显示函数名字

3.实现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]}

获取所有值

${关联数组变量名[*]} # 方式1
${关联数组变量名[@]} # 方式2

示例1:设置变量属性

需求

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

  1. 使用declare设置一个整型变量并赋值
  2. 取消变量的整型类型, 尝试设置其他类型值尝试
  3. 设置变量只读, 尝试赋值测试

演示

在这里插入图片描述
给整型变量mm赋值,然后再赋值为非整型,可以从图中看到其实是失败了。

示例2:查看当前Shell所有函数名

查看所有变量与所有函数

declare

在这里插入图片描述

示例3:实现普通索引数组

需求

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

步骤

1.创建declare1.sh文件
2.编辑declare1.sh文件内容, 使用declare定义普通数组数据与打印
2.执行文件

创建文件

touch declare1.sh

编辑文件

vim declare1.sh

declare1.sh文件内容

#!/bin/bash
declare -a arr1=(1 2 3 aa)
echo ${arr1[1]}
echo ${arr1[*]}
declare -a arr2=([0]=1 [1]=2 [2]=3 [4]=aa)
echo ${arr2[1]}
echo ${arr2[*]}
declare -a arr2[3]=4
echo ${arr2[*]}

在这里插入图片描述
示例4:实现key-value关联数组
需求

使用declare定义关联数组并打印输出

在这里插入图片描述

注意: 使用参数 -A 才是关联数组 , 关联数组无法使用索引获取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day01 项目简介分布式基础概念

最近在改进公司开发的商城项目,看到了尚硅谷的谷粒商城,就快速学习了下,因为之前的Kafka,Redis都是在这学习的,还有大数据的Flink。所以感觉一定不错,就开始了。 这里做一下学习笔记 一、项目简介 1 、项目背景 1 &…

AutoSAR系列讲解 - AutoSAR标准文档概览

目录 一、文档下载 二、文档结构 三、文档内容 四、各部分介绍 1、Introduction and functional o 目录 一、文档下载 二、文档结构 三、文档内容 四、各部分介绍 1、Introduction and functional overview 2、Acronyms and abbreviations 3、Related documentati…

基于Java+SpringBoot+vue的口腔管家平台设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

向日葵× 实在RPA擦出AI的火花,贝锐与实在智能官宣战略合作

6月19日,实在智能(Intelligence Indeed)与贝锐(Oray)正式宣布达成战略合作。实在智能作为国内AI准独角兽企业和超级自动化平台提供商,与国内领先的SaaS远程连接解决方案提供商贝锐的实力“牵手”&#xff0…

Yolov5(tag v7.0)网络结构解读,以yolov5s为例

最近yolov5用的多,发现确实好用,于是较深入学了一下。下面按照训练的流程梳理一下网络的结构,同时也是自己记一下便于后面查阅。 同时,我也查了一些关于yolov5网络结构介绍的资料,发现大多是v5.0,少数v6.0的…

游泳戴的耳机推荐,列举感受水下快乐的游泳耳机

​游泳是个真心好玩的活动,对一般人来说简直是大杀器!它不仅对身体没有太大伤害,还能锻炼到身体的大部分肌肉,对心肺也超级有帮助。不过,问题来了: 之前很少见到有人戴耳机游泳,主要是担心进水…

mpi实现矩阵乘法,卷积,池化(gemm,covn,pooling)

矩阵乘法: 卷积: 池化: Mpi基本原理: 1.什么是MPI Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发。 一种新的库描述,不是一种语言。共有上百个函数调用接口,提供与C和F…

phpstorm+xdebug/php项目调试

前提:项目使用xampp集成 一、下载xdebug,当到xampp/php/exp目录下 二、配置php.ini [Xdebug] zend_extension"D:/xampp/php/ext/php_xdebug.dll" xdebug.collect_paramsOn xdebug.collect_returnOn xdebug.auto_traceOn xdebug.trace_output_…

android adb 获取电池信息以及设置

本文主要包含 1、设置adb 无线调试桥连接步骤 2、打印设备电池状态(当前电量、充电状态、充放电电流大小、电池种类等) 3、更改电池充电状态、电量百分比、电池还原命令 4、断开adb 远程调试桥 -----------------------------------------------------------------…

【数据结构与算法分析】树上漫步之探究前序、中序、后序、广度优先遍历算法的实现与优化

文章目录 前言二叉树的遍历方式构建二叉树递归遍历二叉树非递归遍历二叉树层次遍历 示例二叉树结果总结 前言 二叉树是数据结构中最基本的数据结构之一,它在计算机科学中有着非常重要的应用。二叉树的遍历是指按照一定的顺序遍历二叉树中的所有节点,是二…

【STM32训练—WiFi模块】第二篇、STM32驱动ESP8266WiFi模块获取天气

目录 第一部分、前言 1、获取心知天气API接口 2、硬件准备 第二部分、电脑串口助手调试WIFI模块获取天气 1、ESP8266获取天气的流程 2、具体步骤 第三部分、STM32驱动ESP8266模块获取天气数据 1、天气数据的解析 1.1、什么函数来解析天气数据? 2.1、解析后…

C语言之运算符

C语言运算符 文末附运算符的优先表和ASCII表 一、算术运算符 加()减(—)乘(*)除(/)模(余)运算符(%):不允许出现浮点型,…

Linux---详细讲解linux计算机体系结构

前言 Linux是一种开源的操作系统,它的核心思想是基于冯诺依曼体系结构。在本文中,我们将深入探讨Linux的基本原理和操作系统的概念。 Linux是一款基于Unix操作系统的开源软件,它的核心是由Linus Torvalds在1991年开发的。Linux的出现&#x…

CSS | CSS中height:100vh和height:100%的区别

目录 1、对于设置height:100%;有下面几种情况 2、对于设置height:100vh时有如下的情况 首先,我们得知道1vh它表示的是当前屏幕可见高度的1/100,而1%它表示的是父元素长或者宽的1% 1、对于设置height:100%;有下面几种情况 (1)当…

Win10 hyper-v与vmware不兼容解决方案

Win10 hyper-v与vmware不兼容怎么办 一、异常1.1 异常描述 - V M w a r e W o r k s t a t i o n 与 H y p e r − V 不兼容 \color{red}{VMware Workstation 与 Hyper-V 不兼容} VMwareWorkstation与Hyper−V不兼容1.2 异常原因 二、解决办法2.1 关闭Hyper-V启动2.2 关闭内核…

OpenGL 光照贴图

1.简介 现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。想想一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽,所以它没有镜面高光,轮毂非常闪亮。 2.漫反射…

pyspark安装教程

pyspark安装教程 一、Windows下配置pyspark环境1.1 JDK下载安装1.2 Scala下载安装1.3 spark下载安装1.4 Hadoop下载安装1.5 pyspark下载安装 二、pyspark原理简介 一、Windows下配置pyspark环境 在python中使用pyspark并不是单纯的导入pyspark包就可以实现的,而是需…

【SpringCloud入门】-- Nacos快速入门之搭建服务与注册中心

目录 前言: 1.Nacos的下载与安装 2. 去MySQL建立一个名为nacos的数据库 3.介绍配置文件,conf目录下的 application.properties 4.nacos启动 5. nacos作为注册中心的作用 6.建立一个项目,实现向命名空间注册 前言: 上文我们已…

基于人工智能的AI理发师能帮托尼老师做什么?

BarberGPT是一个人工智能理发师,它可以让您在照片上尝试不同的发型。您只需要上传您的照片,标记您的头发,然后就可以看到惊人的变化。BarberGPT使用了先进的深度学习技术,可以根据您的脸型、肤色和发质生成适合您的发型。BarberGP…

MySql常见问题(长期更新)

基于mysql 8.0.3版本 一、忘记root密码1.1 、linux 系统下忘记密码1.2、Windows 系统下忘记密码1.3 Unix 和类 Unix 系统 二、账号问题2.1 远程访问账号设置 一、忘记root密码 1.1 、linux 系统下忘记密码 啥?你问我为什么会忘记密码?别问,…