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

Shell基础2

声明!
        学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)


目录

一、       Linux临时变量和永久变量... 1

(一)     临时变量... 1

(二)     永久变量... 1

二、       常见变量相关命令... 2

(一)     echo $HOME. 2

(二)     which -a ls. 2

(三)     echo $PATH.. 2

(四)     示例... 2

三、       临时变量... 3

(一)     方法一... 3

(二)     方法二... 3

四、       永久变量... 4

五、       字符串相关操作... 5


  • Linux临时变量和永久变量

  • 临时变量

       

定义:临时变量是在当前Shell会话中临时定义的变量,它们只在当前Shell或其子Shell中有效。

设置方法:使用export命令可以直接在Shell命令行下定义临时变量。例如,export TEMP_VAR=value会定义一个名为TEMP_VAR的临时变量,并将其值设置为value。

生效范围:临时变量只在当前Shell会话中有效。一旦Shell关闭,这些变量就会失效。因此,它们适合用于一次性或临时性的环境调整。

查看与删除:可以使用echo命令查看临时变量的值,例如echo $TEMP_VAR。要删除临时变量,可以使用unset命令,例如unset TEMP_VAR。

  • 永久变量

             定义:永久变量是通过修改配置文件来定义的变量,它们会在系统重启或用户重新登录后仍然有效。

             设置方法:

                    系统级别:要设置对所有用户都有效的永久变量,可以编辑/etc/profile文件。在这个文件中添加export命令来定义变量。修改后,需要运行source /etc/profile命令使设置立即生效,或者等待下次系统启动或用户登录时生效。

                    用户级别:要设置仅对当前用户有效的永久变量,可以编辑用户目录下的.bash_profile或.bashrc文件(取决于Shell的类型和配置)。在这些文件中添加export命令来定义变量。修改后,同样需要运行source ~/.bash_profile(或对应的.bashrc文件)来使设置立即生效。

             生效范围:永久变量在系统重启或用户重新登录后仍然有效。对于系统级别的永久变量,它们对所有用户都有效;对于用户级别的永久变量,它们仅对当前用户有效。

             查看与删除:与临时变量类似,可以使用echo命令查看永久变量的值。但是,要删除永久变量,需要编辑相应的配置文件并删除对应的export命令。然后,保存文件并重新加载Shell(或等待下次登录)以使更改生效。注意,直接运行unset命令只能删除当前Shell会话中的临时变量,而不能删除永久变量。


  • 常见变量相关命令

  • echo $HOME

echo 是一个命令,用于在终端输出文本或变量的值。

$HOME 是一个环境变量,它包含了当前用户的主目录(也称为家目录)的路径。

  • which -a ls

which 是一个命令,用于查找并显示指定命令的绝对路径。

-a 是一个选项,告诉 which 命令显示所有匹配指定命令的路径,而不仅仅是第一个找到的路径。

ls 是您想要查找路径的命令。

  • echo $PATH

$PATH 是一个环境变量,它定义了一个由冒号分隔的目录列表。这些目录是系统搜索可执行文件的路径。

当您在终端中输入一个命令时,系统会按照 PATH 变量中列出的目录顺序来搜索这个命令的可执行文件。一旦找到,系统就会执行该命令。

  • 示例


  • 临时变量

  • 方法一

创建好的1.sh脚本,添加执行权限,移动到usr/bin目录下

mv 1.sh /usr/bin

/usr/bin 是一个通常用于存放系统级可执行文件的目录。将文件移动到这里意味着您希望该文件能够像其他系统命令一样,从任何目录通过终端直接调用。

  • 方法二

把/root目录直接添加到环境变量中让整个目录的文件都可以执行

export PATH=/root:PATH

export 是一个 shell 内建命令,用于设置或导出环境变量,使其对当前 shell 会话及其启动的任何子进程都可见。

PATH=/root:$PATH 是一个赋值表达式,它将 PATH 变量的值设置为 /root 目录加上原来的 PATH 值(通过 $PATH 引用)。这里,: 是目录分隔符。


  • 永久变量

      打开文件vi /usr/bin/.bashrc

      添加变量export PATH=/root:PATH

      变量生效 source /usr/bin/.bashrc

.bashrc 的作用:.bashrc 是一个 shell 脚本,用于 Bash shell 的个人初始化设置。当用户登录到一个基于 Bash 的终端会话时,这个文件会被执行。它通常用于设置环境变量、别名、函数等个性化配置。

/usr/bin/ 的用途:/usr/bin/ 目录通常包含系统级的可执行文件,这些文件对所有用户都是可用的。这个目录不是用来存放用户个人配置文件的。

source 命令source 是一个 shell 内建命令,用于在当前 shell 会话中读取并执行指定文件中的命令。这意味着,执行 source 文件名 会将文件中的内容作为当前 shell 会话的输入并执行。

  • 字符串相关操作

      假设想知道一个字符串的长度,该如何实现

             str = "hello word"

             echo ${#str}


      

${#str} 是参数扩展的一种形式,其中 # 符号用于获取变量 str 的长度。

${} 是参数扩展的基本形式,用于获取变量的值。

在 ${} 内部加上 #,后面紧跟着变量名(在这个例子中是 str),就构成了获取变量长度的语法。

      显示前三个字符

             echo ${str:0:3}

在 ${} 内部,冒号 : 后面跟着两个数字,分别表示起始位置和长度。在这个例子中,0 表示起始位置(字符串的第一个字符),3 表示要提取的字符数量。

需要注意的是,Bash 中的字符串索引是从 0 开始的,这与许多编程语言一致。

相关文章:

Shell基础2

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…...

7z 解压器手机版与解压专家:安卓解压工具对决

7z 解压器手机版和解压专家都是在安卓设备上广受欢迎的解压软件。7z 解压器手机版由深圳乡里云网络科技有限公司开发,大小为 32.8M,支持多种常见的压缩文件格式,如.zip、.rar、.7z 等。 它对安卓操作系统的特性和用户习惯进行了优化&#xf…...

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们,上一期的保留小数位数教学够用一辈子,有不错的点赞量,可我连一个粉丝铁粉都没有,你愿意做我的第一个铁粉吗?OK废话不多说,开始! 温故与知心 可能你也学过,且是工作者…...

【Android、IOS、Flutter、鸿蒙、ReactNative 】启动页

Android 设置启动页 自定义 splash.xml 通过themes.xml配置启动页背景图 IOS 设置启动页 LaunchScreen.storyboard 设置为启动页 storyboard页面绘制 Assets.xcassets 目录下导入图片 AppLogo Flutter 设置启动页 Flutter Android 设置启动页 自定义 launch_background.xm…...

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在,想执行一个业务订单的检查,该检查的代码放在test单元测试中,启动也是好好的,当点击对应的方法执行Test的时候就报错 tip:已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…...

聊天服务器(8)用户登录业务

目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include "chatservice.hpp" #include "public.hpp" #include <string> #include <muduo/base/Loggi…...

stm32在linux环境下的开发与调试

环境安装 注&#xff1a;文末提供一键脚本 下载安装stm32cubeclt 下载地址为&#xff1a;https://www.st.com/en/development-tools/stm32cubeclt.html 选择 linux版本下载安装 安装好后默认在家目录st下 > $ ls ~/st/stm32cubeclt_1.16.0 …...

flinkOnYarn并配置prometheus+grafana监控告警

flinkOnYarn并配置prometheusgrafana监控告警 一、相关服务版本&#xff1a; flink版本&#xff1a;1.17.2 pushgateway版本&#xff1a;1.10.0 prometheus版本&#xff1a;3.0.0 grafana-v11.3.0参考了网上的多个文档以及学习某硅谷的视频&#xff0c;总结了一下文档&#x…...

麒麟系统下docker搭建jenkins

首先我们需要创建宿主机挂载路径&#xff0c;我这里放在本地的/data/henkins/home,然后赋予权限&#xff0c;命令如下&#xff1a; mkdir -p /data/jenkins/home chown -R 1000:1000 /data/jenkins/home chmod -R 777 /data/jenkins/homedocker run -d --restart …...

论文阅读 - Causally Regularized Learning with Agnostic Data Selection

代码链接&#xff1a; GitHub - HMTTT/CRLR: CRLR尝试实现 https://arxiv.org/pdf/1708.06656v2 目录 摘要 INTRODUCTION 2 RELATED WORK 3 CAUSALLY REGULARIZED LOGISTIC REGRESSION 3.1 Problem Formulation 3.2 Confounder Balancing 3.3 Causally Regularized Lo…...

计算机网络之会话层

一、会话层的核心功能 会话层作为OSI模型的第五层&#xff0c;不仅承担着建立、管理和终止通信会话的基本任务&#xff0c;还隐含着许多复杂且关键的功能&#xff0c;这些功能共同确保了网络通信的高效、有序和安全。 1. 会话建立与连接管理&#xff1a; 身份验证与授权&…...

blind-watermark - 水印绑定

文章目录 一、关于 blind-watermark安装 二、bash 中使用三、Python 调用1、基本使用2、attacks on Watermarked Image3、embed images4、embed array of bits 四、并发五、相关 Project 一、关于 blind-watermark Blind watermark 基于 DWT-DCT-SVD. github : https://githu…...

reduce-scatter:适合分布式计算;Reduce、LayerNorm和Broadcast算子的执行顺序对计算结果的影响,以及它们对资源消耗的影响

目录 Gather Scatter Reduce reduce-scatter:适合分布式计算 Reduce、LayerNorm和Broadcast算子的执行顺序对计算结果的影响,以及它们对资源消耗的影响 计算结果理论正确性 资源消耗方面 Gather 这个也很好理解,就是把多个进程的数据拼凑在一起。 Scatter 不同于Br…...

DAY64||dijkstra(堆优化版)精讲 ||Bellman_ford 算法精讲

dijkstra&#xff08;堆优化版&#xff09;精讲 题目如上题47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 邻接表 本题使用邻接表解决问题。 邻接表的优点&#xff1a; 对于稀疏图的存储&#xff0c;只需要存储边&#xff0c;空间利用率高遍历节点链接情况相对容…...

使用Git工具在GitHub的仓库中上传文件夹(超详细)

如何使用Git工具在GitHub的仓库中上传文件夹&#xff1f; 如果觉得博主写的还可以&#xff0c;点赞收藏关注噢~ 第一步&#xff1a;拥有一个本地的仓库 可以fork别人的仓库或者自己新创建 fork别人的仓库 或者自己创建一个仓库 按照要求填写完成后&#xff0c;点击按钮创建…...

Python酷库之旅-第三方库Pandas(218)

目录 一、用法精讲 1021、pandas.DatetimeIndex.inferred_freq属性 1021-1、语法 1021-2、参数 1021-3、功能 1021-4、返回值 1021-5、说明 1021-6、用法 1021-6-1、数据准备 1021-6-2、代码示例 1021-6-3、结果输出 1022、pandas.DatetimeIndex.indexer_at_time方…...

斗鱼大数据面试题及参考答案

MySQL 索引及引擎区别 一、MySQL 索引 索引是一种数据结构,用于快速查找数据库中的数据。它就像是一本书的目录,通过索引可以快速定位到需要的数据行,而不用全表扫描。 普通索引 普通索引是最基本的索引类型,它没有任何限制,可以在一个或多个列上创建。例如,在一个用户表…...

后仿真中的GLS测试用例的选取规则

一 仿真目的 门级仿真的主要目的,从根本上来说,是确保在物理实现阶段所应用的SDC(Standard Delay Constraint,标准延迟约束文件)中的各项约束条件准确无误地反映了设计的初衷和要求。这一环节在芯片设计的整体流程中占据着至关重要的地位,因为它直接关系到最终芯片的物理…...

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理 目录 应用场景 接口文档 接口信息 请求参数 响应参数 调试 阿里云openApi平台调试 查看调用结果 查看SDK示例 下载SDK 遇到问题 本地调试 总结 应用场景 项目有一个提现的场景&#xff0c;需要用户真实的身份信息。 …...

UI库架构设计

UI库架构设计 分层 rc-xxx&#xff0c;提供基础组件&#xff0c;unstyled component (headless) &#xff0c;只具备功能交互&#xff0c;不具备UI表现样式体系基础组件复合组件&#xff0c;Search&#xff1a;Input Select &#xff0c;IconButton&#xff1a;Icon Button业…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...