免责声明
学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
Shell脚本
建立一个sh脚本
touch 1.sh (新建脚本文件)
vi 1.sh(编写文件内容)
按 i 可以写入内容,按esc :wq退出并保存
解释
1、创建脚本文件
2、脚本文件中第一行为指定脚本编译器:# !/bin/bash
最终调用的都是dash
执行shell脚本命令: 1、./1.sh
难道我们必须要修改权限才能执行sh脚本吗?让我们看一下接下来的两种方式。
2、bash+文件名相对路径\绝对路径3、.sh+文件名相对路径\绝对路径
当然我们的source也可以执行 4、source+文件名相对路径\绝对路径
shell脚本变量
在Kali Linux系统中,系统变量(也称为环境变量)是在整个用户会话或整个操作系统中可用的变量。这些变量可以存储诸如路径、配置信息、用户设置等数据,并且可以在系统中的多个程序和脚本之间共享。以下是 一些常见的Kali Linux系统变量及其作用域:
全局系统变量(作用于整个操作系统)
-
PATH
-
作用:包含可执行文件的目录列表,当用户在终端输入命令时,系统会在这些目录中查找相应的可执行文件。
-
示例:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-
-
HOME
-
作用:指向当前用户主目录的路径。
-
示例:
/home/user
-
-
USER
-
作用:当前登录用户的用户名。
-
示例:
kali
-
-
SHELL
-
作用:当前用户登录的shell类型。
-
示例:
/bin/bash
-
-
LANG
-
作用:定义系统的语言和字符集。
-
示例:
en_US.UTF-8
-
-
PWD
-
作用:当前工作目录的绝对路径。
-
示例:
/home/user/projects
-
用户级别的环境变量
用户可以在自己的主目录下的.bashrc
或.profile
文件中设置特定的环境变量,这些变量仅对该用户会话有效。
设置用户级别的环境变量
-
打开终端。
- 编辑
.bashrc
文件:nano ~/.bashrc
- 添加新的环境变量:
export MY_VARIABLE="my_value"
- 使更改生效:
source ~/.bashrc
使用 env
或 printenv
命令查看环境变量
-
**
env
**:显示当前所有的环境变量。 - **
printenv
**:可以查看特定环境变量的值,例如:printenv PATH
注意事项
-
修改系统级别的环境变量通常需要管理员权限。
-
对于临时设置环境变量,可以在当前终端会话中使用
export
命令,但该设置不会在新的终端窗口或会话中保留。
在Kali Linux系统中,设置持续化变量(永久环境变量)意味着要配置环境变量,使其在系统重启后仍然有效。这通常涉及到修改用户级别的配置文件(如.bashrc
或.profile
)或系统级别的配置文件(如/etc/profile
)。以下是设置Kali Linux中持续化变量的步骤:
设置用户级别的永久环境变量
-
打开终端。
-
编辑用户级别的配置文件。对于Bash shell用户,通常是
.bashrc
文件;对于Zsh shell用户,则是.zshrc
文件。nano ~/.bashrc
-
添加新的环境变量,并使用
export
命令。例如:export MY_VARIABLE="my_value"
-
保存文件并退出编辑器。
-
使更改生效,执行以下命令:
source ~/.bashrc
设置系统级别的永久环境变量
对于系统级别的环境变量,需要编辑/etc/profile
文件。请使用root权限执行以下操作:
-
打开终端。
-
使用文本编辑器打开
/etc/profile
文件。例如,使用nano
编辑器:sudo nano /etc/profile
-
在文件末尾添加新的环境变量,并使用
export
命令。例如:export SYSTEM_VARIABLE="system_value"
-
保存文件并退出编辑器。
-
使更改生效,执行以下命令:
source /etc/profile
临时环境变量
通过在变量前加上export,将变量变为临时环境变量。
在Kali Linux系统中,临时环境变量是指仅在当前终端会话中有效的变量。一旦关闭终端或会话结束,这些变量就会丢失。设置临时环境变量非常简单,只需在终端中使用export
命令即可。
设置临时环境变量
-
打开终端。
-
使用
export
命令设置临时环境变量。例如:export TEMP_VARIABLE="temp_value"
查看临时环境变量
-
使用
env
命令查看当前所有的环境变量,包括临时设置的变量:env | grep TEMP_VARIABLE
-
或者使用
printenv
命令查看特定临时环境变量的值:printenv TEMP_VARIABLE
注意事项
-
临时环境变量仅在当前终端会话中有效,关闭终端或会话结束后,这些变量将不再存在。
-
如果需要在多个终端会话中共享变量,建议设置持续化环境变量(永久环境变量)。
自定义变量(普通变量作用域:当前解释器)
在Kali Linux系统中,自定义变量(普通变量)通常指的是在脚本或命令行中定义的局部变量,其作用域仅限于当前解释器会话或脚本执行期间。这些变量不会影响到其他终端会话或全局环境变量。
设置自定义变量
-
在脚本中设置自定义变量
打开一个文本编辑器,创建一个新的脚本文件,例如
my_script.sh
,并在其中定义变量:#!/bin/bash MY_CUSTOM_VAR="Hello, Kali!" echo $MY_CUSTOM_VAR
保存文件并赋予执行权限:
chmod +x my_script.sh
运行脚本:
./my_script.sh
输出将是:
Hello, Kali!
-
在命令行中设置自定义变量
在终端中直接定义变量并使用:
MY_CUSTOM_VAR="Hello, Kali!" echo $MY_CUSTOM_VAR
输出将是:
Hello, Kali!
注意事项
-
自定义变量的作用域仅限于当前解释器会话或脚本执行期间。
-
变量名通常以字母或下划线开头,后面可以跟字母、数字或下划线。
-
变量值可以是字符串、数字或其他类型的数据。
通过以上步骤,您可以在Kali Linux系统中轻松地创建和使用自定义变量,这些变量仅在当前解释器会话中有效。
eg:
定义一个name变量:name=”leyinsec”
利用echo打印输出echo $name
注:空格需要用引号,引起来(空格代表结束)
变量作用域
在Kali Linux系统中,变量的作用域决定了变量在何处以及如何被访问。以下是几种常见的变量作用域:
1. 局部变量(Local Variables)
-
作用域:仅在定义它们的函数或代码块内有效。
- 示例:
function my_function() {local MY_VAR="This is local"echo $MY_VAR } my_function echo $MY_VAR # 这将不会输出任何内容,因为MY_VAR在函数外部不可见
2. 全局变量(Global Variables)
-
作用域:在整个脚本或程序中有效,包括所有函数和代码块。
- 示例:
MY_VAR="This is global" function my_function() {echo $MY_VAR } my_function echo $MY_VAR # 这将输出 "This is global"
3. 环境变量(Environment Variables)
-
作用域:在整个用户会话或整个操作系统中有效。
- 设置:
export MY_ENV_VAR="This is an environment variable"
- 查看:
printenv MY_ENV_VAR
4. 用户级别的环境变量
-
作用域:仅对当前用户有效。
- 设置:
echo "export MY_USER_VAR='This is a user-specific environment variable'" >> ~/.bashrc source ~/.bashrc
5. 系统级别的环境变量
-
作用域:对所有用户有效。
- 设置:
sudo sh -c 'echo "export MY_SYSTEM_VAR='This is a system-wide environment variable'" >> /etc/profile' source /etc/profile
6. 临时变量(Temporary Variables)
-
作用域:仅在当前终端会话中有效。
- 设置:
export TEMP_VAR="This is temporary"
-
关闭终端后,TEMP_VAR将不再存在。
总结
-
局部变量:仅在定义它们的函数或代码块内有效。
-
全局变量:在整个脚本或程序中有效。
-
环境变量:在整个用户会话或整个操作系统中有效。
-
用户级别的环境变量:仅对当前用户有效。
-
系统级别的环境变量:对所有用户有效。
-
临时变量:仅在当前终端会话中有效。
特殊变量
在Kali Linux系统中,特殊变量主要指的是那些具有特殊含义和用途的变量。这些变量由Bash shell提供,用于在脚本和命令行中存储和传递信息。以下是一些常见的特殊变量及其作用:
特殊变量列表
-
**
$0
**:当前脚本的文件名。 -
**
$n
**:传递给脚本或函数的参数。n
是一个数字,表示第几个参数。 -
**
$#
**:传递给脚本或函数的参数个数。 -
**
$@
**:传递给脚本或函数的所有参数。 -
**
$*
**:传递给脚本或函数的所有参数。被双引号包含时,与$@
稍有不同。 -
**
$?
**:上个命令的退出状态,或函数的返回值。 -
**
$$
**:当前Shell进程ID。
特殊变量的使用示例
假设我们有一个脚本test.sh
,内容如下:
#!/bin/bash
echo "File Name: $0"
echo "First Parameter: $1"
echo "Second Parameter: $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters: $#"
运行该脚本并传入两个参数:
./test.sh Zara Ali
输出将是:
File Name: ./test.sh
First Parameter: Zara
Second Parameter: Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters: 2