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 开始的,这与许多编程语言一致。