linux shell 入门学习笔记10内置shell命令
bash基础的内置命令
- echo
- eval
- exec
- export
- read
- shift
echo命令
-n 不换行输出
-e 解析字符串中的特殊符号\n 换行
\r 回车
\t 制表符 四个空格
\b 退格
-n参数演示
xiao123@xiao123:~/Downloads$ echo 你真胖;echo 你还挺可爱;
你真胖
你还挺可爱
xiao123@xiao123:~/Downloads$ echo -n 你真胖;echo 你还挺可爱;
你真胖你还挺可爱
xiao123@xiao123:~/Downloads$ echo -n 你真胖;echo -n 你还挺可爱;
你真胖你还挺可爱xiao123@xiao123:~/Downloads$
-e参数演示
xiao123@xiao123:~/Downloads$ echo "我看你挺\n好的"
我看你挺\n好的
xiao123@xiao123:~/Downloads$ echo -e "我看你挺\n好的"
我看你挺
好的
xiao123@xiao123:~/Downloads$ printf "我看你挺\n好的"
我看你挺
好的xiao123@xiao123:~/Downloads$ printf "我看你挺\n好的\n"
我看你挺
好的
xiao123@xiao123:~/Downloads$
eval命令
执行多个命令
xiao123@xiao123:~/Downloads$ eval ls;cd /tmp
different.sh make_vars.sh nohup.out special_test.sh t1.sh test.sh
xiao123@xiao123:/tmp$
exec命令
不创建子进程,执行后续命令,且执行完毕后,自动exit。
xiao123@xiao123:~/Downloads$ su - root
Password:
root@xiao123:~# exec date
2023年 02月 25日 星期六 10:45:02 CST
xiao123@xiao123:~/Downloads$
export命令
查找和设置环境变量的值
read 命令
用于接收标准输入或者其他文件描述符的输入,并且可以和用户进行交互。如果没有指定变量名,读取的数据将被自动赋值给特定的变量$REPLY。read每次调用读取一行。
-a 指定变量为数组
-r 反斜杠转义不会生效,意味着行末的’\’成为有效的字符,例如使 \n 成为有效字符而不是换行
-p 指定输出提示信息
-d 输入结束符,当输入的内容出现这个字符时,立即结束。一般情况下是以IFS为参数的间隔,但是通过-d自定义
-n 指定输入的字符长度
-t 指定读取值时等待的时间(秒),read命令会一直等待用户输入,时间到自动退出
-s 不显示输入的值,一般用于密码
IFS (Internal Field Separator)输入字段分隔符,Bash 会根据 IFS 中定义的字符来进行字符串拆分。
无选项单参数
不带参数,输入值都用空格隔开
xiao123@xiao123:~/Downloads$ read ARGS
11 22 33
xiao123@xiao123:~/Downloads$ echo ${ARGS}
11 22 33
xiao123@xiao123:~/Downloads$
无选项多参数
定义多个变量,变量和输入值都用空格隔开。
xiao123@xiao123:~/Downloads$ read ARG1 ARG2
11 22 33 44
xiao123@xiao123:~/Downloads$ echo ${ARG1} ${ARG2}
11 22 33 44
xiao123@xiao123:~/Downloads$ echo ${ARG1}
11
xiao123@xiao123:~/Downloads$ echo ${ARG2}
22 33 44
xiao123@xiao123:~/Downloads$
-a展示
将接收到的数据看作一个数组。使用IFS
定义的分割符分割。
xiao123@xiao123:~/Downloads$ read -a ARGS
11 22 33 44 55
xiao123@xiao123:~/Downloads$ echo ${ARGS[*]}
11 22 33 44 55
xiao123@xiao123:~/Downloads$ echo ${ARGS[1]} ${ARGS[2]}
22 33
xiao123@xiao123:~/Downloads$
-r展示
字符串原样输出,不转义特殊字符。
xiao123@xiao123:~/Downloads$ read -r ARGS
\b\narg
xiao123@xiao123:~/Downloads$ echo ${ARGS}
\b\narg
xiao123@xiao123:~/Downloads$
-d展示
指定read命令的结束符。
xiao123@xiao123:~/Downloads$ read -d "-" ARG
arg1
arg2
arg3
-xiao123@xiao123:~/Downloads$ echo ${ARG}
arg1 arg2 arg3
xiao123@xiao123:~/Downloads$
-p展示
指定输出提示信息。
xiao123@xiao123:~/Downloads$ read -p "请输入一个字符:" ARG
请输入一个字符:a
xiao123@xiao123:~/Downloads$ echo ${ARG}
a
xiao123@xiao123:~/Downloads$
-t展示
指定输入的超时时间。单位:s
xiao123@xiao123:~/Downloads$ read -t 3 ARG
xiao123@xiao123:~/Downloads$
-s展示
不显示输入的字符。
xiao123@xiao123:~/Downloads$ read -s ARG
xiao123@xiao123:~/Downloads$ echo ${ARG}
1234567890
xiao123@xiao123:~/Downloads$
IFS展示
xiao123@xiao123:~/Downloads$ IFS='|'
xiao123@xiao123:~/Downloads$ read ARG1 ARG2 ARG3
1|2|3
xiao123@xiao123:~/Downloads$ echo ${ARG1}
1
xiao123@xiao123:~/Downloads$ echo ${ARG2}
2
xiao123@xiao123:~/Downloads$ echo ${ARG3}
3
xiao123@xiao123:~/Downloads$
IFS文件实验展示
xiao123@xiao123:~/Downloads$ cat ./file.csvcyberciti.biz|202.54.1.1|/home/httpd|ftpcbzuser
nixcraft.com|202.54.1.2|/home/httpd|ftpnixuser
xiao123@xiao123:~/Downloads$ cat ./ifstest.sh
file=./file.csvIFS='|'
printf "domain\t\tip\t\twebroot\t\tusername\n"
while read -r domain ip webroot username;
doprintf "%s\t%s\t%s\t%s\n" ${domain} ${ip} ${webroot} ${username}
done < "${file}"
xiao123@xiao123:~/Downloads$ bash ./ifstest.sh
domain ip webroot usernamecyberciti.biz 202.54.1.1 /home/httpd ftpcbzuser
nixcraft.com 202.54.1.2 /home/httpd ftpnixuser
xiao123@xiao123:~/Downloads$
shift命令
移动命令行参数,默认命令shift
=shift 1
。
shift例子1
xiao123@xiao123:~/Downloads$ cat shift.sh
echo ">>没有使用shift"
echo "输入的参数数量: $#"
echo '$1 $2 $3是:' $1, $2, $3
shift 2
echo ">>使用了shift2之后"
echo "剩余输入的参数数量:$#"
echo '$1 $2 $3是:' $1, $2, $3
xiao123@xiao123:~/Downloads$ bash ./shift.sh 11 22 33
>>没有使用shift
输入的参数数量: 3
$1 $2 $3是: 11, 22, 33
>>使用了shift2之后
剩余输入的参数数量:1
$1 $2 $3是: 33, ,
xiao123@xiao123:~/Downloads$
shift例子2
xiao123@xiao123:~/Downloads$ cat ./shift2.sh
until [ -z "$1" ]
doecho "$@"shift
done
xiao123@xiao123:~/Downloads$ bash ./shift2.sh 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9
4 5 6 7 8 9
5 6 7 8 9
6 7 8 9
7 8 9
8 9
9
xiao123@xiao123:~/Downloads$
相关文章:

linux shell 入门学习笔记10内置shell命令
bash基础的内置命令 echoevalexecexportreadshift echo命令 -n 不换行输出 -e 解析字符串中的特殊符号\n 换行 \r 回车 \t 制表符 四个空格 \b 退格-n参数演示 xiao123xiao123:~/Downloads$ echo 你真胖;echo 你还挺可爱; 你真胖 你还挺可爱 xiao123xiao123:~/Downloads$ ec…...

[动手写操作系统]-02-开机运行系统并打印‘hello‘
文章目录 理解三个概念: 中断interrupts, CPU,寄存器registers 目标:让上一个静默的界面打印一些文本 我们将改进我们的无限循环引导扇区并在屏幕上打印一些东西。我们将为此提出中断。 我们尝试将"Hello"写到寄存器al, 字节0x0e写到ah (the higher part of ax),并…...

Delete `␍`eslint(prettier/prettier) in vscode 的解决方案
错误描述从 Github 仓库拉取代码,使用 vscode 打开,页面报错,每一行都爆红 (如下图)问题原因由于历史原因,windows下和linux下的文本文件的换行符不一致。Windows在换行的时候,使用了换行符CRLF…...

gof23 设计模式 各个模式代码demo
Gof23 设计模式,也叫Gang of Four(GoF)设计模式,是由四位设计模式大师(Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides)撰写的一本书——《设计模式:可复用面向对象软件的基础》所…...

0 初识Kotlin
0 基本介绍 相信很多开发者对Kotlin还是比较陌生的。 Kotlin是一种新型的编程语言,由JetBrains公司开发与设计,在2012年开源, 但没引起什么注意。 直到2017年google宣布将Kotlin作为Android开发的首选语言,Kotlin才开始大放异彩。…...

阿里云服务器部署SpringBoot+Vue项目(宝塔面板傻瓜式操作)
准备工作 一台服务器(我用的是阿里云)SpringBoot项目的jar包Vue项目的dist包 一、购买服务器 然后重置实例密码。 远程连接 登陆成功后安装宝塔面板 二、安装宝塔面板(无账号的注册一个账号) 地址:https://www.bt.cn/new/download.html 选择对应的镜像、不知道…...

27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组(双指针遍历)
目录[27. 移除元素-力扣](https://leetcode.cn/problems/remove-element/description/?languageTagsc)[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)[88. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-…...

什么时候用std::move()?
文章目录1. "是什么?"2. "有何用?"3. "什么时候用?"1. “是什么?” 虽然 std::move() 从技术角度上是一个函数 ,但我认为它不是真正的函数。 它是编译器考虑表达式值的方式之间的转换器。 2. “有何用?” 首先要注意的是 std…...

建立做机器学习项目的范式
建立起做机器学习项目的范式,萃取出核心步骤,避免后面做项目没有明确的方向。 核心步骤: 1、明确自己想做什么样的项目,感兴趣的领域; 2、找到满足项目的数据集,开源的或者自建数据集; 数据…...

搭建k8s高可用集群—20230225
文章目录多master(高可用)介绍高可用集群使用技术介绍搭建高可用k8s集群步骤1. 准备环境-系统初始化2. 在所有master节点上部署keepalived3.1 安装相关包3.2 配置master节点3.3 部署haproxy错误解决3. 所有节点安装Docker/kubeadm/kubelet4. 部署Kuberne…...

Java 修饰符和多态
文章目录一、修饰符1. 权限修饰符2. 状态修饰符2.1 final2.2 static二、多态1. 成员访问特点2. 多态中的转型3. 多态案例一、修饰符 1. 权限修饰符 2. 状态修饰符 2.1 final final 关键字是最终的意思,可以修饰成员方法、成员变量及类。 //1.修饰成员变量 publi…...

学了一年Java的我,想转嵌入式了
秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 目录前言为啥我想去转行?如果我现在选择转硬件,我…...

【Git】Git冲突与解决方法
目录 一、Git冲突如何产生? 二、解决Git冲突—手动修改冲突 【第一步】在 hot-fix 分支上增加如下代码,并且提交。 【第二步】在master 分支上同样的地方增加如下代码,并且提交。 【第三步】 我们现在在 master 分支上合并 hot-fix 分支&a…...

深度剖析数据在内存的存储
目录1.深度剖析数据在内存的存储(前言)数据类型介绍类型的基本归类整形在内存中的存储原码、反码、补码大小端练习总结1.深度剖析数据在内存的存储(前言) 今天就让我戴佳伟给大家讲一下数据在内存中的存储。之中有好多让我们深思的点,大家都拿起笔记本,…...

身高排序(绝对值大的排后面,小的排前面)
题目描述 小明今年升学到了小学一年级,来到新班级后,发现其他小朋友身高参差不齐,然后就想基于各小朋友和自己的身高差,对他们进行排序,请帮他实现排序 输入描述 第一行为正整数H和N 0 < H < 200 为小明的身高…...

高频前端面试题之HTML篇(三)
11. label的作用是什么?是怎么用的? label元素不会向用户呈现任何特殊效果,但是,它为鼠标用户改进了可用性,当我们在label元素内点击文本时就会触发此控件。也就是说,当用户选择该标签时,浏览器…...

使用DG备份恢复测试库的流程以及可能出现的问题
使用DG备份恢复测试库的流程以及可能出现的问题 评估数据量和服务器存储空间从DG备库备份全库和归档日志清理测试库环境测试库恢复备份(一)从DG主库备份控制文件测试库恢复备份(二)从DG备库备份最新的归档日志测试库恢复备份(三)需要单独备份数据文件的情况思路:从DG备库…...

Springboot注释解析
SpringBootApplication 标注主程序类 说明一个spring boot应用 SpringBootConfiguration 标注为spring boot配置类 EnableAutoConfiguration 开启自动配置功能 AutoConfigurationPackage 自动配置包 Import({Registrar.class}) 导入一个容器到组件 Registrar.class…...

C语言之通讯录(动态 存储文件版)
目录 前言 一.基本思路 二.代码的实现 2.1通讯录菜单 2.2通讯录的定义及功能 2.3函数实现 2.3.1初始化通讯录 2.3.2文件信息传递到通讯录里 2.3.3扩容通讯录 2.3.4增加联系人 2.3.5删除联系人 2.3.6查询联系人 2.3.7修改联系人 2.3.8打印通讯录 2.3.9信息保留在文…...

Linux 工具
文章目录一、软件包管理:yum1. 软件的生态环境2. yum 的使用3. yum 源及分类4. 在 centos 7.6 下更新 yum 源到国内镜像5. yum 命令二、编辑器:vim1. 命令模式2. 底行模式3. 插入模式4. 替换模式和视图模式5. vim 配置三、编译器:gcc/g1. C语…...

Java知识复习(七)常见的设计模式(装饰、代理、观察、策略、建造)
前言 参考书籍:《秒懂设计模式》 1、装饰器模式(Decorator) 1、装饰器模式:对原始对象动态地进行“包装”,是对类实例“装饰”的结果;类似于继承的效果,但这个过程是动态的,是可设…...

Linux系统看门狗应用编程
目录看门狗应用编程介绍打开设备获取设备支持哪些功能:WDIOC_GETSUPPORT获取/设置超时时间:WDIOC_GETTIMEOUT、WDIOC_SETTIMEOUT开启/关闭看门狗:WDIOC_SETOPTIONS喂狗:WDIOC_KEEPALIVE看门狗应用编程实战在产品化的嵌入式系统中&…...

Spring MVC 源码- LocaleResolver 组件
LocaleResolver 组件LocaleResolver 组件,本地化(国际化)解析器,提供国际化支持回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 LocaleResolver 组件,可以回到《一个请求的旅行过程》中的 Dispat…...

Servlet
Servlet1 简介2 快速入门3 执行流程4 生命周期5 方法介绍6 体系结构7 urlPattern配置8 XML配置1 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。 …...

简单的周总结
做一个简单的周总结。 校 OJ 上打了近 7 场比赛,ZR 及其他平台各一两场左右。 头几场打的中规中矩,分数大致在 100-200 左右,与同学分数差别不太大,但也没有很突出。 后面几场比较爆炸,分数一直在 100 以下࿰…...

Elasticsearch7.8.0版本进阶——IK中文分词器
目录一、ES 的默认分词器测试示例二、IK 中文分词器2.1、IK 中文分词器下载地址2.2、ES 引入IK 中文分词器2.3、IK 中文分词器测试示例三、ES 扩展词汇测试示例一、ES 的默认分词器测试示例 通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定要分…...

一个阿里P6的说不会接口自动化测试,他不会是自己评的吧...
序 近期和一个阿里的测试工程师交流了一波,他竟然说我不会接口自动化测试,我当场就不服了我说你P6自己评级的吧,今天就带大家好好盘一盘接口自动化,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接…...

规则引擎与风控系统04:风控系统实例(下)
上一节把风控实例的基础代码都撸了出来。接下来再来把核心服务代码和规则文件写出来。 因为有了实体类、Dao,所以接来下就可以写服务类了。之前说过这个实例就是要实现两个目的: 1、一分钟内连续访问三次以上,就会被直接封杀; 2、黑名单用户登录会记录可疑事件。 所以服务类…...

我为什么选择Linux mint 21.1 “Vera“ ? Mint安装优化调教指南(分辨率DPI)
前言:为什么是Mint 笔者算是Linux老用户了,作为一个后端开发,尝试了多种不同发行版。 一开始是Manjaro这种Arch系,但是其对于开发而言实在是太过不稳定;每次滚动更新都要解决很多冲突。不适合当生产力(本…...

雅思经验(十四)
剑10 test3 阅读p3这篇阅读比较难做下来,主要是这个题材我们不太熟悉,介绍了一种成为拉皮塔人,他们在太平洋上航行,很多岛屿上都有他们足迹,后来人们发掘、探索他们的历史的故事。1.derelict 与 abandoned 主要是前面的…...