声明!
通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章,如涉及侵权马上删除文章,笔记只是方便各位师傅学习知识,以下网站、工具只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负.
文章为个人学习笔记。
进入Kali终端:
ctrl+alt+t
1、shell权限
1、第一种,需加权限
创建shell脚本文件:
-
使用vim编辑器创建一个名为1.sh的shell脚本文件。
-
命令:vim 1.sh
vim 1.sh
1.sh的内容。
echo longyu.com
脚本解释器的shebang:
-
在脚本文件的第一行,可以指定使用哪种shell来执行脚本。常见的有/bin/bash、/bin/dash和/bin/sh。
-
这三种shebang(#!)指令实际上在大多数情况下都会调用dash,因为dash通常被配置为/bin/sh的链接。
检查/bin/sh的链接:
-
使用ls -l /bin/sh命令可以查看/bin/sh实际链接到的shell。
-
在这个例子中,/bin/sh链接到了dash。
┌──(root㉿kali)-[~]
└─# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 6月 5日 16:08 /bin/sh -> dash
运行脚本:
-
保存并退出vim后,用户可以通过在终端中输入./1.sh来运行这个脚本。
┌──(root㉿kali)-[~/work]
└─# ./1.sh
zsh: 权限不够: ./1.sh
提高权限。
┌──(root㉿kali)-[~/work]
└─# chmod 777 1.sh
┌──(root㉿kali)-[~/work]
└─# ls -la
总计 16
drwxr-xr-x 3 root root 4096 11月14日 09:53 .
drwx------ 20 root root 4096 11月14日 09:53 ..
-rwxrwxrwx 1 root root 16 11月14日 09:52 1.sh
drwxr-xr-x 3 root root 4096 10月 4日 18:41 exam
2、第二种,shell解释器的权限
创建新的shell脚本文件:
-
用户可以创建一个新的名为2.sh的shell脚本文件。
-
使用vim编辑器打开这个文件:vim 2.sh。
创建2.sh文件
vim 2.sh
文本的内容
echo www.baidu.com
查看权限
┌──(root㉿kali)-[~/work]
└─# ls -la
总计 20
drwxr-xr-x 3 root root 4096 11月14日 10:20 .
drwx------ 20 root root 4096 11月14日 10:20 ..
-rwxrwxrwx 1 root root 16 11月14日 09:52 1.sh
-rw-r--r-- 1 root root 20 11月14日 10:20 2.sh
drwxr-xr-x 3 root root 4096 10月 4日 18:41 exam
执行脚本:
-
即使脚本没有执行权限,用户仍然可以通过sh 2.sh命令来执行这个脚本。
-
或者,用户也可以使用bash 2.sh来执行脚本,这两者效果相同。
┌──(root㉿kali)-[~/work]
└─# sh 2.sh
www.baidu.com:
┌──(root㉿kali)-[~/work]
└─# bash 2.sh
www.baidu.com:
┌──(root㉿kali)-[~/work]
└─#
3、第三种,source
使用source命令:
-
用户可以使用source 2.sh命令来执行脚本。
-
这个命令与sh命令执行脚本的效果差不多,但是source命令会在当前的shell环境中执行脚本,而不是在一个新的shell环境中。
颜色加深标注:
-
使用source命令时,脚本中的命令会在当前的shell环境中执行,这可能会导致一些命令(如ls)的输出颜色加深,因为它们是在当前shell环境中执行的。
创建新的shell脚本文件:
-
用户可以创建一个新的名为3.sh的shell脚本文件。
-
使用vim编辑器打开这个文件:vim 3.sh。
创建3.sh文件
vim 3.sh
文本的内容
echo www.baidu.com
ls
运行3.sh
┌──(root㉿kali)-[~/work]
└─# sh 3.sh
www.baidu.com
1.sh 2.sh 3.sh exam
┌──(root㉿kali)-[~/work]
└─# source 3.sh
www.baidu.com
1.sh 2.sh 3.sh exam
2、变量声明和定义
设置变量
例子1
┌──(root㉿kali)-[~/work]
└─# name="xiaoyu"
┌──(root㉿kali)-[~/work]
└─# echo $name
xiaoyu
-
这行代码在shell中定义了一个名为name的变量,并将其值设置为xiaoyu。
-
使用$符号来引用变量,打印出变量name的值,即xiaoyu。
例子2
┌──(root㉿kali)-[~/work]
└─# age=27;echo $age
27
┌──(root㉿kali)-[~/work]
└─# age="27";echo $age
27
┌──(root㉿kali)-[~/work]
└─# age=xingyu;echo $age
xingyu
首先设置变量age的值为27,然后立即打印这个值。
使用分号分隔命令
然后在下一行打印变量的值
总结:
-
在同一行中执行多个命令时,需要使用分号(;)来分隔命令。
-
确保在引用变量时使用$符号,这样shell会替换为变量的实际值。
例子3
┌──(root㉿kali)-[~/work]
└─# anme="xiaoyu"
┌──(root㉿kali)-[~/work]
└─# age="27"
┌──(root㉿kali)-[~/work]
└─# echo "my name is $anme , and my age is $age years old"
my name is xiaoyu , and my age is 27 years old
定义了一个名为anme的变量,值设置为xiaoyu
定义了一个名为age的变量,并将其值设置为27。
-
这行代码使用echo命令打印一条包含两个变量值的消息。
-
$anme和$age是变量的引用,它们会被替换为变量的实际值。
-
由于变量anme实际上是xiaoyu,变量age是27,所以输出的消息是:my name is xiaoyu , and my age is 27 years old。
┌──(root㉿kali)-[~/work]
└─# echo 'my name is $anme , and my age is $age years old'
my name is $anme , and my age is $age years old
-
这行代码使用echo命令打印一条字符串。
-
字符串中的$anme和$age是变量的占位符,它们应该被替换为变量的值。
-
但是,由于字符串被单引号包围,shell不会对这些变量进行替换。
┌──(root㉿kali)-[~/work]
└─# echo my name is $anme , and my age is "$age" years old
my name is xiaoyu , and my age is 27 years old
-
这行代码使用echo命令打印一条字符串,该字符串中包含了两个变量anme和age。
-
变量$anme没有被双引号包围,而变量$age被双引号包围。
-
即使变量anme没有被双引号包围,它仍然被正确替换了,因为在shell中,变量的替换不受双引号的影响。双引号主要用于防止字符串中的某些字符被解释为特殊字符(例如,$、`、"、\等)。
──(root㉿kali)-[~/work]
└─# echo my name is "$anme", and my age is {$age} years old
my name is xiaoyu, and my age is {27} years old
-
这行代码使用echo命令打印一条字符串,该字符串中包含了两个变量anme和age。
-
变量$anme被正确地引用,并且被双引号包围。
-
变量$age被错误地引用,使用了大括号{}而不是正确的$符号。
查看变量
set
set | grep name