Shell基础2

embedded/2024/11/17 4:04:59/

声明!
        学习视频来自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 开始的,这与许多编程语言一致。


http://www.ppmy.cn/embedded/138165.html

相关文章

【从零开始的LeetCode-算法】3300. 替换为数位和以后的最小元素

给你一个整数数组 nums 。 请你将 nums 中每一个元素都替换为它的各个数位之 和 。 请你返回替换所有元素以后 nums 中的 最小 元素。 示例 1: 输入:nums [10,12,13,14] 输出:1 解释:nums 替换后变为 [1, 3, 4, 5] &#xff0…

AI大模型(一):Prompt AI编程

一、Prompt Engineering,提示工程 提示工程也叫指令工程: Prompt是发给大模型的指令,比如【讲个睡前故事】、【用Python写个消消乐游戏】等;本质上大模型相关的工程工作,都是围绕prompt展开的;提示工程门…

413: Quick Sort

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…

react 中 useEffect Hook 作用

useEffect是一个用于处理副作用&#xff08;Side Effects&#xff09;的 Hook 一、处理副作用 1. 副作用的概念 副作用是指在组件渲染过程中执行的、会影响组件外部环境或具有外部可见影响的操作。 常见的副作用包括数据获取&#xff08;如从服务器获取数据&#xff09;、订…

tdengine学习笔记

官方文档&#xff1a;用 Docker 快速体验 TDengine | TDengine 文档 | 涛思数据 整体架构 TDENGINE是分布式&#xff0c;高可靠&#xff0c;支持水平扩展的架构设计 TDengine分布式架构的逻辑结构图如下 一个完整的 TDengine 系统是运行在一到多个物理节点上的&#xff0c;包含…

Linux服务器下oracle自动rman备份的实现

一、概述 为确保oracle数据库数据的安全和一致性&#xff0c;一般我们都需要利用备份手段进行数据库的备份。在oracle数据库中&#xff0c;rman因其强大的功能和完善的手段&#xff0c;成为数据库备份的首选。Linux服务器中&#xff0c;要实现自动脚本备份&#xff0c;一般都是…

gitHub常用操作

gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork&#xff0c;fork下来&#xff1a;将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址&#xff08;fork…

【Linux】Ubuntu中muduo库的编译环境安装

Muduo is a multithreaded C network library based on the reactor pattern. muduo库的介绍就是&#xff1a;一个基于reactor反应堆模型的多线程C网络库。 muduo网络库是C语言开发的一个非常优秀的网络库&#xff0c;作者陈硕&#xff0c;muduo网络库在多线程环境下性能非常高…