声明!
学习视频来自B站up主 泷羽sec ,有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!
文章为个人学习笔记。
sh文件调用
删除所有的shs文件
┌──(root㉿kali)-[~/work]
└─# rm *.sh
创建2.sh
vim 2.sh
echo "hello word"
创建 3.sh
-
打开终端。
-
输入 vim 3.sh 来创建并编辑 3.sh 文件。
-
在 3.sh 文件中输入以下内容:
vim 3.sh
name="xiaoyu"
age="23"
创建 4.sh
-
确保你还在终端中。
-
输入 vim 4.sh 来创建并编辑 4.sh 文件。
-
在 4.sh 文件中输入以下内容:
vim 4.sh
source 3.sh
echo "my name is $name i an $age years old"
┌──(root㉿kali)-[~/work]
└─# chmod +x 3.sh 4.sh
chmod: 无法访问 '3.sh': 没有那个文件或目录
┌──(root㉿kali)-[~/work]
└─# bash 4.sh
my name is xiaoyu i an 23 years old
输出重定向
输出重定向用于将命令的输出发送到文件或设备,而不是终端。这里有两种常见的符号:
-
>:如果文件不存在,会创建一个新文件;如果文件已存在,会覆盖原有内容。
-
>>:如果文件不存在,同样会创建一个新文件;如果文件已存在,会将内容追加到文件末尾,而不是覆盖。
覆盖
┌──(root㉿kali)-[~/work]
└─# ls > 1.txt
┌──(root㉿kali)-[~/work]
└─# cat 1.txt
1.txt
2.sh
3.sh
4.sh
┌──(root㉿kali)-[~/work]
└─# who > 1.txt
┌──(root㉿kali)-[~/work]
└─# cat > 1.txt
asfalsfhasfh
asfajksfhkjaf
afhkjafh
afjkahfkas
^Z
zsh: suspended cat > 1.txt
┌──(root㉿kali)-[~/work]
└─# cat 1.txt
asfalsfhasfh
asfajksfhkjaf
afhkjafh
afjkahfkas
-
ls > 1.txt:列出当前目录的内容,并将输出重定向到1.txt文件中,如果1.txt已存在,其内容会被覆盖。
-
cat 1.txt:显示1.txt文件的内容。
-
who > 1.txt:获取当前登录的用户列表,并将输出重定向到1.txt文件中,同样会覆盖原有内容。
-
cat > 1.txt:这是一个交互式命令,提示用户输入内容,输入结束后(通过Ctrl+D结束),内容会被写入1.txt,覆盖原有内容。
追加内容
┌──(root㉿kali)-[~/work]
└─# ls >> 1.txt
┌──(root㉿kali)-[~/work]
└─# cat 1.txt
asfalsfhasfh
asfajksfhkjaf
afhkjafh
afjkahfkas
1.txt
2.sh
3.sh
4.sh
-
ls >> 1.txt:列出当前目录的内容,并将输出追加到1.txt文件的末尾,而不是覆盖原有内容。
输出重定向到 /dev/null
在Linux和类Unix系统中,/dev/null是一个特殊的设备文件,它被称为“黑洞”,因为任何写入到/dev/null的数据都会被丢弃,不会显示或保存任何地方。这通常用于丢弃不需要的输出或防止命令输出显示在终端上。ls
┌──(root㉿kali)-[~/work]
└─# ls > /dev/null
当你执行命令 ls > /dev/null 时,ls 命令的输出(即当前目录的内容)被重定向到 /dev/null。这意味着输出不会被显示在终端上,也不会被写入任何文件。这个命令执行后,你不会看到任何输出,因为所有的输出都被“丢弃”了。
输出重定向示例
例子1
┌──(root㉿kali)-[~/work]
└─# cat < 1.txt
asfalsfhasfh
asfajksfhkjaf
afhkjafh
afjkahfkas
1.txt
2.sh
3.sh
4.sh
这会显示 1.txt 文件的内容。
例子2
vim 5.txt
/root/
/root
┌──(root㉿kali)-[~/work]
└─# vim 5.txt
┌──(root㉿kali)-[~/work]
└─# ls -la < 5.txt
总计 28
drwxr-xr-x 2 root root 4096 11月24日 21:16 .
drwx------ 21 root root 4096 11月24日 21:16 ..
-rw-r--r-- 1 root root 68 11月24日 21:04 1.txt
-rw-r--r-- 1 root root 18 11月24日 20:49 2.sh
-rw-r--r-- 1 root root 23 11月24日 20:57 3.sh
-rwxr-xr-x 1 root root 56 11月24日 20:54 4.sh
-rw-r--r-- 1 root root 13 11月24日 21:16 5.sh
例子3
文件描述符用于标识打开的文件。每个进程都有三个标准文件描述符:
-
0:标准输入(stdin),通常关联到键盘。
-
1:标准输出(stdout),通常关联到终端屏幕。
-
2:标准错误输出(stderr),用于错误信息,也通常关联到终端屏幕。
例子:
-
标准输出重定向:使用 > 符号,可以将标准输出重定向到文件。如果文件已存在,会被覆盖;如果不存在,会创建新文件。
-
错误输出重定向:使用 2> 符号,可以将错误输出重定向到文件。同样,如果文件已存在,会被覆盖;如果不存在,会创建新文件。
┌──(root㉿kali)-[~/work]
└─# ls -la > 6.txt
┌──(root㉿kali)-[~/work]
└─# coo >6.txt 2> 7.txt
┌──(root㉿kali)-[~/work]
└─# cat 7.txt
找不到命令 “coo”,您的意思是:
“co” 命令来自 Debian 软件包 rcs
“col” 命令来自 Debian 软件包 bsdextrautils
“cdo” 命令来自 Debian 软件包 cdo
“goo” 命令来自 Debian 软件包 goo
“cog” 命令来自 Debian 软件包 cog
“cow” 命令来自 Debian 软件包 fl-cow
尝试 apt install <deb name>
┌──(root㉿kali)-[~/work]
└─#