一、永久环境变量
1. 常见的环境变量
2. 设置永久环境变量
3.1.将脚本加进PATH变量的目录中
3.2.添加进环境变量里
3.2.修改用户的 shell 配置文件
二、字符串操作
1. 字符串拼接
2. 字符串切片
3. 字符串查找
4. 字符串替换
5. 字符串大小写转换
6. 字符串分割
7. 去除空白
8. 字符串长度
9. 其他常见字符串操作
结语
学习视频泷羽sec:
shell编程(2)永久环境变量和字符串显位_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1YGmDY9E74?spm_id_from=333.788.videopod.sections&vd_source=0e1eb78c133fc5f90cf3666ebd4c1a64
PS:这一期部分操作以roo权限来进行,如果不晓得怎么切换可以查看往期章节星海幻影-CSDN博客。
一、永久环境变量
环境变量是操作系统用来存储系统和应用程序配置信息的键值对。在 Shell 脚本中,环境变量的设置通常用于配置系统或应用程序的运行时环境。而永久环境变量是指那些在用户每次登录时都能自动加载的环境变量。
1. 常见的环境变量
在 Linux 或 Unix 系统中,永久环境变量是那些在系统启动时或用户登录时自动加载,并在会话期间保持有效的环境变量。以下是一些常见的永久环境变量,它们在系统中用来配置用户环境和程序行为。
-
1.
PATH
-
作用:定义了操作系统搜索可执行文件的目录路径。当你在命令行输入命令时,Shell 会按照
PATH
中列出的目录顺序查找命令。 -
常见配置:通过设置
PATH
环境变量,可以将用户自定义的程序目录添加到搜索路径中。
-
export PATH=$PATH:/usr/local/bin:/home/user/my_programs #设置
echo $PATH
-
2.
HOME
-
作用:表示当前用户的主目录。在大多数 Linux 系统中,每个用户都有一个独立的主目录,用于存放个人文件和配置。
-
echo $HOME # 输出当前用户的家目录路径
-
3.
USER
-
作用:表示当前登录的用户名。这个变量会自动由系统设置,并用于指示当前会话的用户。
-
echo $USER # 输出当前登录的用户名
-
4.
SHELL
-
作用:指定当前用户使用的 Shell 类型。例如,对于使用 Bash 的用户,
SHELL
的值通常是/bin/bash
。
-
echo $SHELL # 输出当前使用的 Shell,例如 /bin/bash
user是因为我是用的kali账号登录,然后su roo切换root账号。
2. 设置永久环境变量
要设置永久环境变量,通常有以下几种方法:
3.1.将脚本加进PATH变量的目录中
-
echo $PATH
-
mv script.sh /usr/bin/
-
将预先准备的脚本赋予权限移动到PATH变量的目录中,新打开的shell窗口就可以输入该文件名执行脚本了。
3.2.添加进环境变量里
通过将 /root/
目录添加到环境变量 PATH
中,使得该目录下的所有可执行文件都可以直接在命令行中执行。
export PATH=/root:$PATH
1.sh
-
export PATH=/root:$PATH
:这行命令将/root
目录添加到当前PATH
环境变量的前面(注意$PATH
在这里是当前环境变量的值)。-
/root
是你想要添加的目录。 -
$PATH
是现有的PATH
环境变量,包含了其他已有的目录路径。
这样,当你执行一个命令时,系统会首先在
/root
目录中查找可执行文件。如果该目录下有你需要的可执行文件,就会优先执行该文件。 -
3.2.修改用户的 shell 配置文件
-
对于 Bash 用户,一般修改
~/.bashrc
(对于交互式非登录 shell)或者~/.bash_profile
(对于登录 shell)。 -
对于 Zsh 用户,通常修改
~/.zshrc
文件。
命令:
/usr/bin/vim /root/.bashrc
export PATH=/root:$PATH
esc-->:-->wq(退出)
source /root/.bashrc
-
/usr/bin/vim /root/.bashrc
:使用vim
编辑器打开 root 用户的.bashrc
配置文件。 -
export PATH=/root:$PATH
:将/root
目录添加到PATH
环境变量的最前面。 -
esc --> :wq
:在vim
中按Esc
退出编辑模式,输入:wq
保存并退出。 -
source /root/.bashrc
:使.bashrc
的修改立即生效。 -
1.sh
:执行名为1.sh
的脚本文件(假设该脚本已设置可执行权限)。
ps:删除用rm或者编辑的方式,删除变量
二、字符串操作
在编程中,字符串操作是非常常见且重要的任务之一。无论是在文本处理、文件解析,还是在网络数据处理等场景中,我们都需要灵活地操作和处理字符串。尤其在 Shell 脚本 中,字符串操作不仅是脚本功能的基础,而且直接影响脚本的可读性和效率。
1. 字符串拼接
在 Shell 中,字符串拼接非常简单,可以直接通过空格来连接字符串:
str1="Hello"
str2="World"
result="$str1 $str2" # 拼接后 "Hello World"
echo "$result"
2. 字符串切片
在 Shell 中,字符串切片使用 ${string:start:length}
语法:
text="Hello, World!"
slice="${text:0:5}" # 获取 "Hello"
echo "$slice"
如果你想从某个位置切到结尾,可以这样做:
slice="${text:7}" # 从位置 7 开始,获取 "World!"
echo "$slice"
3. 字符串查找
在 Shell 中,可以使用 grep
或 [[ ]]
来判断子字符串是否存在:
-
使用
[[ ]]
判断子字符串是否存在:text="Hello, World!" if [[ "$text" == *"World"* ]]; thenecho "Found 'World'" fi
-
使用
grep
查找字符串:text="Hello, World!" echo "$text" | grep -q "World" # 如果找到 "World",返回 0 if [[ $? -eq 0 ]]; thenecho "Found 'World'" fi
4. 字符串替换
Shell 也可以进行简单的字符串替换:
-
替换第一次出现的子字符串:
text="Hello, World!" result="${text/World/Python}" # 替换第一个 "World" 为 "Python" echo "$result" # 输出 "Hello, Python!"
-
替换所有出现的子字符串:
text="Hello, World! Hello again!" result="${text//Hello/Hi}" # 替换所有 "Hello" 为 "Hi" echo "$result" # 输出 "Hi, World! Hi again!"
5. 字符串大小写转换
Shell 原生不直接支持大小写转换,但可以借助 tr
或 awk
等工具来实现:
-
转为大写:
text="hello" result=$(echo "$text" | tr 'a-z' 'A-Z') # 转为大写 echo "$result" # 输出 "HELLO"
-
转为小写:
text="HELLO" result=$(echo "$text" | tr 'A-Z' 'a-z') # 转为小写 echo "$result" # 输出 "hello"
6. 字符串分割
在 Shell 中,字符串分割通常是通过设置 IFS
(内部字段分隔符)来实现的:
text="apple,banana,orange"
IFS=',' read -ra fruits <<< "$text"
# 现在数组 fruits 存储了 ["apple", "banana", "orange"]
for fruit in "${fruits[@]}"; doecho "$fruit"
done
7. 去除空白
-
去除首尾空白字符(使用
sed
或awk
):text=" Hello, World! " result=$(echo "$text" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') # 去除首尾空白 echo "$result" # 输出 "Hello, World!"
-
去除中间的空白字符:
text=" Hello World " result=$(echo "$text" | tr -s ' ') # 压缩多个空格为一个 echo "$result" # 输出 "Hello World"
8. 字符串长度
可以使用 ${#string}
来获取字符串的长度:
text="Hello, World!"
length=${#text} # 获取字符串长度
echo "$length" # 输出 13
9. 其他常见字符串操作
-
字符串反转: Shell 本身没有内建的字符串反转函数,但可以用
rev
命令来反转字符串:text="Hello" result=$(echo "$text" | rev) # 使用 rev 命令反转字符串 echo "$result" # 输出 "olleH"
-
检查是否为数字:
text="12345" if [[ "$text" =~ ^[0-9]+$ ]]; thenecho "It's a number" elseecho "It's not a number" fi
这些是 Shell 脚本中常见的字符串操作方法。在实际使用时,你可以根据需求选择合适的命令和语法。对于更复杂的字符串操作,可以考虑使用外部工具如 awk
、sed
、cut
等。
结语
在 Shell 脚本编程中,环境变量和字符串操作是两个至关重要的基础知识点。通过掌握如何配置和管理永久环境变量,您可以在脚本中高效地使用外部工具和程序,提升脚本的灵活性和可重用性。而熟练掌握字符串操作,则能够帮助您在处理文本、解析数据和与其他程序交互时更加得心应手。
在本篇中,我们探讨了设置永久环境变量的常见方法,并且详细介绍了如何通过编辑 shell 配置文件来实现变量的持久化。环境变量的配置不仅仅是为了简化脚本执行,还能让不同程序和工具之间相互配合,提高开发效率。
与此同时,字符串操作的技巧为 Shell 脚本提供了丰富的文本处理能力。无论是简单的拼接、切片,还是更复杂的查找、替换和分割,掌握这些常见的操作能够帮助我们在处理动态数据时更加高效地完成任务。通过合理利用 Shell 提供的工具和命令,我们可以实现许多强大而灵活的字符串处理功能。