声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

脚本创建执行与变量使用

三种脚本解释器
sh bash dash
视频中说三种最终调用的都是dash
我所知道sh可以配置为dash或者是bash(不知到是不是)

这个权限的显示从左到右是所有者权限,组权限,其他人权限
通过dash,bash,sh可以执行没有执行权限的.sh文件
source命令也可以进行执行(此命令有颜色区分)

变量定义
name=’xiaoyv’
echo $name
$符号可以串在字符间
双引号解析字符串中的变量,单引号不解析
set查看变量定义
unset name删除变量定义

永久环境变量和字符串显位
windows中在,高级环境变量中找
linux中在$PATH中
ls命令存在别名
通过which命令查看文件位置
可以将我们写好的文件放到环境变量中去
这样的话就可以让.sh文件直接执行了
可以通过export将目录加入到环境变量中去
冒号作为拼接,此时的环境变量是临时变量,通过source进行写入
source /usr/bin/ .bashrc
新开一个窗口进行测试
解析字符串的长度
${井号str} ${str:0:3}(模板渲染问题)
这样

脚本参数传递与数学运算

$* 所有参数作为字符串输出
$1 输出第几个参数
$(一些固定的字符串)代表时间,运行用户,工作目录等
$# 参数总个数
$0 文件名

运算时参数之间一定要加空格(重要)
运算时乘法运算要转义,括号要转义
注意,运算符与参数之间也必须要空格

脚本与用户交互与if条件判断
通过read命令模拟用户交互
此处的-t代表限制输入时间
-n代表限制输入长度
-p代表在获取字符之前的提示字段
但是在我的kali机中报错
if判断条件eq,lt,gt,ne,else表示反转

字符串运算符和逻辑运算符
在shell中大小写敏感

=与==,=在[]使用,==在[[]]使用
!=
-z判断是否为空
-n判断是否非空
=~正则匹配表达式

&&都为真则为真
||一个为真则为真
!否定前缀

-eq 等于(equal)
-ne 不等于(not equal)
-lt 小于(less than)
-le 小于等于(less than or equal)
-gt 大于(greater than)
-ge 大于等于(greater than or equal)

for结构循环

while结构循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

# 从 1 数到 5
counter=1
while [ $counter -le 5 ]; do
echo "Number: $counter"
let counter=counter+1
done


#!/bin/sh

# 从 1 数到 5
counter=1
while [ $counter -le 5 ]; do
echo "Number: $counter"
counter=$((counter + 1))
done

sh与dash,bash语法或许会不同


我们可以看到sh默认使用的是dash进行执行

使用until循环:

1
2
3
4
5
6
7
8
#!/bin/sh

# 从 1 数到 5
counter=1
until [ $counter -gt 5 ]; do
echo "Number: $counter"
counter=$((counter + 1))
done

也是可以正常执行的