shell内置命令

news2024/11/27 7:41:52

目录

  • 内置命令介绍
  • 内置命令列表
    • 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 才是关联数组 , 关联数组无法使用索引获取

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

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

相关文章

OPC AE server服务的实现

OPC AE server的实现 日前实现了OPC AE server,特此记录备查。 1、事件分三类,从下图可知每类都包含啥内容了,CONDITION看起来主要是一些越限,熟悉其它协议的朋友应该对这个不陌生,一般这种事件产生时,会…

通过Selenium实现Web自动化测试的研究

目录 前言: 1 自动化测试概念 1.2 自动化测试发展阶段 2 自动化测试工具Selenium简介 3 具体测试过程 4 总结 前言: Web自动化测试是Web应用程序测试的重要组成部分,它通过模拟实际用户行为,对Web应用程序进行自动化测试并…

chatgpt赋能python:Python拆包:提高编程效率的神器

Python拆包:提高编程效率的神器 在Python编程中,拆包(unpacking)是一项非常有用的技巧。它可以让你将一个可迭代对象(iterable)中的元素分离开来,赋值给多个变量。这个过程一般称为“解包”&am…

小白到运维工程师自学之路 第三十八集 (redis高可用集群)

一、概述 Redis高可用集群是一种分布式系统,它由多个Redis节点组成,可以提供高可用性和容错性。在Redis高可用集群中,每个节点都可以处理客户端请求,并且数据会在多个节点之间进行复制和同步,以确保数据的可靠性和一致…

Day_51-53kNN分类器

目录 Day_51:kNN分类器 一. 前言 二. 机器学习基本术语 三. kNN算法的原理 1. kNN算法的思想 2. kNN算法的具体实现过程 四. 代码实现 1. 导包 2. 参数初始化 3. 数据的导入 4. 数据的抽取 5. 对于测试集进行预测 6. 核心代码 Day_52:knn分类器&am…

LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理

LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理 通过相机视觉,以对目标物体的不同颜色进行分类,并与平行机器人一起拾取和放置物体。通过使用MATLAB Simulink模拟合适的机器人工作空间来研究使用相机的效率和机器人的准确性。机械臂以使用运动学…

OpenMMLab-AI实战营第二期——5-2. MMSegmentation代码课

文章目录 1. 自定义数据集1.0 整理数据集为特定格式1.1 持久化运行(用文件定义)1.2 运行时生效(直接运行时定义一个class)1.3 注意事项 2. 配置文件3. 运行训练和测试X. 其他语义分割数据集 视频链接:MMSegmentation代…

ThreadPoolExecutor源码

介绍 ThreadPoolExecutor 是 Java 中实现线程池的一个类,它是 ExecutorService 接口的一个实现类。线程池可以用来优化线程的使用,避免频繁地创建和销毁线程,以及限制并发线程的数量,从而提高应用程序的性能。 public class Thr…

读发布!设计与部署稳定的分布式系统(第2版)笔记06_用户

1. 系统的人类用户天生就具备进行创造性破坏的本事 1.1. 用户会消耗内存 1.2. 用户会做奇怪和随机的事情 1.2.1. fuzzing工具箱、基于属性的测试或模拟测试 1.3. 恶意用户总是存在的 1.3.1. 灾祸总会发生,坏人肯定存在 1.4. 用户会合伙对付你 2. 难伺候的用户…

【linux】opencv修改摄像头分辨率

起因 发现linux系统下调用opencv修改摄像头分辨率,一直修改不成功。 原本 正常在window下面读取摄像头数据是如下代码: # capture from web camcap cv2.VideoCapture(0)# set widthcap.set(3, 1280)# set heightcap.set(4, 720)while self._run_flag…

武职302303笔记-day01

这里写自定义目录标题 开发永和小票开发步骤1、对页面进行需求分析 使用CSS的方式 Order.html问题:html代码和css样式代码交织 idea开发后端程序使用chatGPT给我们打工QRCreate.java 开发永和小票 开发步骤 1、对页面进行需求分析 页面是很多文字组成,…

虹科分享丨如何保证我们的数据安全?|数据保护

一、数据安全 你可能已经正在寻找加密服务来帮助保护你的组织的数据,但如果你是一个不熟悉实践或管理数据的人员,"数据加密 "这个短语可能会感觉像技术术语或只是像一个模糊的概念,没有具体的解决方案。 但事实上,数据…

git、axios、模块化导出引入、promise、webpack、

GIT总结 git config --global user.name "你的用户名" git config --global user.email "你的邮箱" git config -l 命令来查看配置信息 git init 仓库初始化 touch index.html 创建index.html文件 git add index.html 文件加入暂存区 git add -A 将全部文件…

车载以太网 - 网络层 - IPv4/IPv6

目录 一、网络层基本信息介绍 1、网络协议适用范围 2、IPv4和IPv6的地址 3、Ethernet Frames 的类型 二、两种类型IP地址的定义: ECU通信的几种方式 路由器(Router)和IP 地址的概念 路由实例介绍 三、IPv4地址介绍 地址分类: 各类型IP可支持的最大网络数…

C语言实现移位密码

一.移位密码 移位密码(Caesar Cipher)也叫凯撒密码是一种简单的加密技术,它通过将明文中的每个字母按照指定的位数进行移位,从而生成密文。例如,在一个"左移3位"的移位密码中,文中的每个字母都向左移动3个位置&#xff…

7.2 SpringBoot实现上传图片API + url映射本地路径registry.addResourceHandler

文章目录 前言一、url映射本地路径二、上传图片API2.1 接口UploadService2.2 实现类UploadServiceImpl2.3 上传图片Controller 三、测试最后 前言 在图书借阅系统里,有很多图片需要前端展示,这些图片大都是由用户上传,保存在服务端&#xff…

chatgpt赋能python:Python拆数程序:如何快速分解数字?

Python拆数程序:如何快速分解数字? 在计算机编程中,数字拆分是一个非常重要的概念。拆分数字可以让我们更好地理解数字格式,进行计算和分析。而Python作为一种功能强大的编程语言,提供了许多高效的工具来帮助我们快速…

【备战秋招】每日一题:华东师范大学保研机试-2022-罗马数字

为了更好的阅读体检,可以查看我的算法学习博客罗马数字 题目内容 罗马数字是古罗马使用的记数系统,现今仍很常见。 罗马数字有七个基本符号: I,V,X,L,C,D,M。 罗马数字IVXLCDM对应的阿拉伯数字1510501005001000 需要注意的是罗马数字与十进位数字的…

chatgpt赋能python:Python拆分语句,让数据处理更有效率

Python 拆分语句,让数据处理更有效率 Python是一种强大的编程语言,不仅支持各种应用开发,而且非常适合数据处理。Python的易用性和灵活性使其成为了数据科学家和工程师首选的编程语言之一。Python的字符串拆分功能能够轻松处理数据的分割和组…

从C语言到C++_20(仿函数+优先级队列priority_queue的模拟实现+反向迭代器)

目录 1. priority_queue的模拟实现 1.1 未完全的priority_queue 1.2 迭代器区间构造和无参构造 1.3 仿函数的介绍和使用 1.4 完整priority_queue代码: 1.5 相关笔试选择题 答案: 2. 反向迭代器 2.1 反向迭代器的普通实现 reverse_iterator.h&a…