当前位置: 首页 > news >正文

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 仓库拉取代码&#xff0c;使用 vscode 打开&#xff0c;页面报错&#xff0c;每一行都爆红 &#xff08;如下图&#xff09;问题原因由于历史原因&#xff0c;windows下和linux下的文本文件的换行符不一致。Windows在换行的时候&#xff0c;使用了换行符CRLF…...

gof23 设计模式 各个模式代码demo

Gof23 设计模式&#xff0c;也叫Gang of Four&#xff08;GoF&#xff09;设计模式&#xff0c;是由四位设计模式大师&#xff08;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides&#xff09;撰写的一本书——《设计模式&#xff1a;可复用面向对象软件的基础》所…...

0 初识Kotlin

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

阿里云服务器部署SpringBoot+Vue项目(宝塔面板傻瓜式操作)

准备工作 一台服务器(我用的是阿里云)SpringBoot项目的jar包Vue项目的dist包 一、购买服务器 然后重置实例密码。 远程连接 登陆成功后安装宝塔面板 二、安装宝塔面板(无账号的注册一个账号) 地址&#xff1a;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() 从技术角度上是一个函数 &#xff0c;但我认为它不是真正的函数。 它是编译器考虑表达式值的方式之间的转换器。 2. “有何用?” 首先要注意的是 std…...

建立做机器学习项目的范式

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

搭建k8s高可用集群—20230225

文章目录多master&#xff08;高可用&#xff09;介绍高可用集群使用技术介绍搭建高可用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 关键字是最终的意思&#xff0c;可以修饰成员方法、成员变量及类。 //1.修饰成员变量 publi…...

学了一年Java的我,想转嵌入式了

秋名山码民的主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f64f;作者水平有限&#xff0c;如发现错误&#xff0c;还请私信或者评论区留言&#xff01; 目录前言为啥我想去转行&#xff1f;如果我现在选择转硬件&#xff0c;我…...

【Git】Git冲突与解决方法

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

深度剖析数据在内存的存储

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

身高排序(绝对值大的排后面,小的排前面)

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

高频前端面试题之HTML篇(三)

11. label的作用是什么&#xff1f;是怎么用的&#xff1f; label元素不会向用户呈现任何特殊效果&#xff0c;但是&#xff0c;它为鼠标用户改进了可用性&#xff0c;当我们在label元素内点击文本时就会触发此控件。也就是说&#xff0c;当用户选择该标签时&#xff0c;浏览器…...

使用DG备份恢复测试库的流程以及可能出现的问题

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

Springboot注释解析

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

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 工具

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

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...