shell 06(shell内置命令)

一、内置命令介绍

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

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

type 命令

 通常来说,内置命令会比外部命令执行得更快:

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

1.1 alias设置命令别名

  • alisa 用于给命令创建别名 
  • 若该命令且不带任何参数,则显示当前 Shell 进程中的所有别名列表

 好处: 可以将经常操作比较复杂的命令进行设置别名,通过别名的操作提高工作效率

alias 别名="命令"

这里使用单引号或双引号都可以

删除指定的别名

unalias 别名


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

unalias -a

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

举例:

alias pslist="ps -aux"  查看所有进程 

alias wn1="watch -n 1 nvidia-smi"   1s刷新一次nvidia-smi界面

1.2 echo输出字符串

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

默认输出换行语法

echo 字符串

输出不换行语法

echo -n  字符串

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

echo -e "hello \nworld"  # -e 可解析转义字符

\c清除echo结尾换行 

1.3 read读取控制台输入

read 是 Shell 内置命令,用于从标准输入中读取数据并赋值给变量。

  • 如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;
  • 如果进行了重定向,那么可以从文件中读取数据。

read [-options] [varl var2 ..]
  • options 表示选项,如下表所示;
  • var 表示用来存储数据的变量,可以有一个,也可以有多个
  • options 和var 都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量 REPLY 变量中
  • $REPLY保存read最后一个读入命令的数据options支持的参数

案例:读取多个字符

#!/bin/bash 
#打印每一个变量的值
#使用read命令读取数据,要有提示信息"请输入姓名,年龄,爱好:”将数据赋值给多个变量

read -p “请输入姓名,年龄,爱好:” name age hobby

echo "姓名:${name}"
echo "年龄:${age}"
echo "爱好:${hobby}"

案例:读取一个字符

#!/bin/bash
# 使用read命令读取数据,要有提示信息 "您确定要删除数据吗?(请输入y/n):" 并且设置读取一个字符
read -n 1 -p "您确定要删除数据吗?(请输入y/n):" char

# 打印这个字符输出
printf "\n"
echo "您输入的字符: ${char}"

案例:限制时间输入

#!/bin/bash

# 使用read命令读取数据,要有提示信息"请输入密码(20秒内):" 并且设置限制时间20秒

read -t 20 -sp  "请输入密码(20秒内 ):" pwd1
echo
read -t 20 -sp "请再次输入密码(20秒内):" pwd2
echo 

# 校验密码与再次输入的密码是否一致

if [ $pwd1 == $pwd2 ]
then
         echo"密码与确认密码一致,验证通过"
else
         echo  "密码与确认密码不一致,验证失败"
 fi

s 静默模式 

1.4 exit退出

exit 用于退出当前Shell环境进程结束运行,并且可以返回一个状态码.一般使用 $? 可以获取退出状态码

正确退出

exit 

错误退出

exit 非0数字  #配合$?用于业务处理

1.5 declare设置变量

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

1.declare设置变量的属性[重要]

declare -i age=20  #设置整形变量

declare +i age #取消限制

declare -r age #只读变量

2.查看全部Shell变量与函数

declare  查看全部Shell变量与函数

declare -f 查询所有函数的定义
declcare -F 查询所有函数的名称列表


3.实现关联数组变量

 关联数组也称为“键值对 (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.6 test

shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试功能与[]一样

1.6.1 整数比较

if test 数字1 options 数字2
then
...
fi

 

1.6.2 字符串比较

 

test "a" == "b"; echo $?
test "a" \> "b"; echo $?

1.6.3 文件比较

 

test -e /home/w/pty.txt; echo $?
test -r /home/w/pty.txt; echo $?

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

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

相关文章

云计算服务体系-架构真题(十四)

云计算服务体系结构SaaS、PaaS、IaaS相对应分别()。 答案。应用层、平台层、基础设施层 (2022)给定关系模式R(U,F),其中U为属性集,F是U的一组函数依赖,那么函数依赖的公理系统(Armstrong)中分解规则是指(&…

Protobuf在IDEA中的插件安装教程

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

《JVM修仙之路》初入JVM世界

《JVM修仙之路》初入JVM世界 博主目前正在学习JVM的相关知识,想以一种不同的方式记录下,娱乐一下 清晨,你睁开双眼,看到刺眼的阳光,你第一反应就是完了完了,又要迟到了。刚准备起床穿衣的你突然意识到不对&…

【mq】如何保证消息可靠性

文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下,kafka的结构和rocketmq的机构基本上一样,都需要一个注册…

首席执行官Adam Selipsky解读“亚马逊云科技的技术产品差异化”

迄今为止,亚马逊云科技已经参与了21世纪几乎所有的大型计算变革,亚马逊云科技是一个很传奇的故事,它始于大约20年前的一项实验,当时亚马逊试图出售其过剩的服务器。人们确实对此表示怀疑。为什么在线书店试图销售云服务&#xff1…

区分什么是Java内存模型(JMM)和 JVM运行时数据区

文章目录 一、概念区分1、什么是内存模型?什么是(内存区域)运行时数据区?2、为什么要有Java内存模型?2.1、硬件的效率与一致性2.2、 CPU和缓存的一致性2.2.1、为什么需要CPU cache?2.2.2、三级缓存&#xf…

如何在 Linux 中设置 SSH 无密码登录

SSH(Secure SHELL)是一种开源且可信的网络协议,用于登录远程服务器以执行命令和程序。 它还用于使用安全复制 (SCP) 命令和 rsync 命令通过网络将文件从一台计算机传输到另一台计算机。 在本文[1]中,我们将向您展示如何在基于 RHE…

基于Java+SpringBoot+vue前后端分离在线问卷调查系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

推荐系统峰会:图与推荐系统

文章目录 图机器学习在京东视频召回中的应用提纲背景图召回架构图业务特色图召回总结 图算法在蚂蚁集团营销推荐场景的应用目录背景基金推荐长尾推荐 图模型在百度推荐系统的实践与思考目录图背景介绍常用算法Feed流图模型演进历程 GNN跨域推荐在微信业务上的应用目录GNN跨域遇…

登录校验-JWT令牌-登陆后下发令牌

目录 思路 接口文档 令牌生成和下发 步骤 具体代码如下 工具类 控制类 测试 前后端联调 思路 令牌生成:登陆成功后,生成JWT令牌,并返回给前端令牌校验:在请求到达服务端后,对令牌进行统一拦截、校验 接口文档…

非常简单!用Java实现一个简单的向量数据库雏形。

概述 向量数据库是用来解决高维向量数据管理和查询的问题。它能够有效地存储、索引和查询大规模高维度向量数据,并提供高性能和高效的相似度搜索。传统的关系型数据库或文档数据库在处理高维向量数据时可能会遇到诸多问题。比如在高维空间中,数据点之间…

搭建web网站

1.基于域名www.openlab.com可以访问网站内容为welcome to openlab!!! (1).安装所需软件HTTPD、mod_ssl [rootserver ~]# yum install httpd mod_ssl -y 添加域名映射:vim /etc/hosts (2)创建网站目录及网页,修改主配置文件新建openlab目录网站 配置文…

【网络安全】防火墙知识点全面图解(二)

本系列文章包含: 【网络安全】防火墙知识点全面图解(一)【网络安全】防火墙知识点全面图解(二)【网络安全】防火墙知识点全面图解(三) 防火墙知识点全面图解(二) 21、路…

基于android的学生公寓后勤系统/学生公寓管理系统APP

摘 要 随着网络科技的发展,移动智能终端逐渐走进人们的视线,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应…

《C语言编程环境搭建》工欲善其事 必先利其器

C语言编译器 GCC 系列 GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC),指一套编程语言编译器,常被认为是跨平台编译器的事实标准。原名是:GNU C语言编译器(GNU C Compiler)。 MinGW 又称mingw32 &#xff0c…

无人驾驶领域的软件测试该如何开展?

无人驾驶汽车使用自主决策和控制系统,这种系统通常由多个软件和硬件组件组成。软件测试是必要的,因为它可以确保无人驾驶汽车的软件系统达到高度可靠性和安全性,以及提高无人驾驶汽车的性能和可靠性。 因此无人驾驶汽车是一定要进行严格的软件…

设计模式--工厂模式(Factory Pattern)

一、 什么是工厂模式 工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但是将对象的实例化过程推迟到子类中。工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象,而无需暴露对…

08.利用Redis实现签到功能

学习目标&#xff1a; 来源&#xff1a;黑马教程 使用Redis中BitMap数据结构使用签到功能和连续签到功能 学习产出&#xff1a; 解决方案&#xff1a; 1. 准备pom环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-b…

【ARP欺骗】嗅探流量、限速、断网操作

【ARP欺骗】 什么是ARP什么是ARP欺骗ARP欺骗实现ARP断网限制网速嗅探流量 什么是ARP ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是一个TCP/IP协议&#xff0c;用于根据IP地址获取物理地址。在计算机网络中&#xff0c;当一个主机需要发…

Linux之iptables防火墙

目录 一.网络安全技术 二.防火墙 2.1.防火墙分类 2.2.iptables工具简述 2.3.iptables基本语法 2.4.控制类型 2.5.查看规则 2.6.添加规则 2.7.黑白名单 2.8.根据规则编号删除 清空 替换规则 2.9.默认策略 2.10.隐藏扩展模块 2.11.显示扩展模块 三.iptables保存规则…