泷羽sec-----shell编程(完结)
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
对于shell编程当然还有很多的用法,不过这里把主要的学习了,后面可自己深入学习,比如循环中的其他操作,以及打开文件等操作
脚本互相调用
前言
在shell
中,与python
中一样,像是导入的形式一样,可以加载其他文件中的资源,可以互相调用
实操
脚本间的互相调用
创建一个1.sh
vim 1.sh
echo "hello word"
创建一个2.sh
文件
vim 2.sh
bash 1.sh 或./1.sh,但是这需要有执行权限
或者这里使用bash执行
使用source使得文件生效
source ./1.sh //因为1.sh有输出,所以会导致执行echo
这里需要指定路径,./表示当前路径,或者使用绝对路径
如果不加路径,会显示当前目录下的文件和目录,这个可以自己测试
脚本调用变量
创建一个1.sh
脚本
vim 1.sh
name="dijia"
age=999
这时候再创建2.sh
脚本
vim 2.sh
source 1.sh
echo "my name is $name and i am $age years old"
解释,这里的source
在这里是用于加载文件的作用,类似于python
中的import
或c
中的include
因为加载了1.sh
,所以1.sh
中的变量是可以在2.sh
中使用的
重定向
前言
输入重定向和输出重定向
输出重定向是指把前面命令执行的结果重定向到某处
输入重定向是指,把文件中的数据重定向到某处
>
是输出重定向,若指定的文件有内容,会覆盖原内容
>>
是输出重定向,若指定的文件有内容,会在文件末尾追加内容
<
是输入重定向,可以把文件中的内容作为某个命令的参数,或者循环的范围等
实操
输出重定向
ls > 1.txt //把当前目录下的文件或目录重定向到1.txt文件中
cat 1.txt //验证
who > 1.txt
cat 1.txt
echo "test" > 1.txt
cat 1.txt
echo "555" >> 1.txt
cat 1.txt
ls >/dev/null 一般使用ls会有回显,但是重定向到这里,相当于垃圾箱,无回显
这里有一个find命令,可以使得在使用find命令寻找的时候,只显示正确数据,其他的数据不显示
find / -name "nmap" 2>/dev/null
2>/dev/null
:这是一个重定向操作。
在 Linux/Unix 系统中,文件描述符
- 0通常代表标准输入,
- 1代表标准输出,
- 2代表标准错误输出。
这里的2>表示将标准错误输出重定向,/dev/null是一个特殊的设备文件,它就像一个 “黑洞”,任何写入其中的数据都会被丢弃。所以将标准错误输出重定向到/dev/null,就使得查找过程中产生的如权限不足、文件系统某些部分无法访问等错误信息不会在终端上显示出来,而只会显示符合条件的查找结果(如果有的话)到标准输出(也就是终端屏幕上,如果没有进一步重定向标准输出的话)。
当然如果想要知道哪些错误输出,可以把错误输出到一个文件中,而不是/dev/null
中
输入重定向
以简单的一个ls
命令测试
首先创建一个文件
vim dir.txt
/home/kali
/home/var
然后在终端执行ls
ls -l < dir.txt //注意这里只会把文件第一行的去进行输入,因为命令单条执行,并非循环
这里是在dir.txt的目录下,所以没有其他路径
这里会把dir.txt文件中的内容,传递给ls -l命令,就会显示这些目录下的文件或目录
因为ls -l 后面可以跟着路径来查看指定目录下的文件或目录的