声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
目录
- 不同脚本的相互调用
- 1.1 使用
.
命令调用脚本 - 1.2 使用
source
命令调用脚本
- 1.1 使用
- 重定向操作
- 2.1 输出重定向与追加重定向
- 2.2 输入重定向示例(一)
- 2.3 输入重定向示例(二)
- 文件描述符
- 3.1 标准输入、输出和错误输出
- 3.2 重定向文件描述符
1. 不同脚本的相互调用
1.1 使用 .
命令调用脚本
我们可以通过在一个脚本中调用另一个脚本来实现脚本之间的相互调用。假设我们有两个脚本文件:2.sh
和 3.sh
,可以按照以下步骤操作:
-
创建
2.sh
脚本: 打开终端并输入以下命令:vim 2.sh
在
2.sh
文件中,输入以下内容:echo "hello world"
-
创建
3.sh
脚本: 同样创建3.sh
文件,并在文件中输入:vim 3.sh
然后在文件中输入:
. 2.sh
-
执行
3.sh
脚本: 通过bash
执行3.sh
脚本:bash 3.sh
执行结果将输出
2.sh
的内容,即hello world
。
1.2 使用 source
命令调用脚本
除了使用 .
来调用脚本,也可以使用 source
命令来实现相同的效果。source
命令与 .
命令功能相同,但是更具可读性。
例如,修改 3.sh
文件:
source 2.sh
然后通过执行 bash 3.sh
来得到相同的输出。
2. 重定向操作
在 Shell 中,重定向用于将输入或输出重定向到文件或其他地方。
2.1 输出重定向与追加重定向
输出重定向
使用 >
符号可以将命令的输出重定向到一个文件。如果文件不存在,它会自动创建该文件。如果文件已存在,原有内容将会被覆盖。
ls > 1.txt
cat 1.txt
上述命令会将 ls
命令的输出(当前目录下的文件列表)写入 1.txt
文件,然后用 cat
命令查看文件内容。
追加重定向
使用 >>
符号可以将命令的输出追加到现有文件中,而不会覆盖原有内容。
ls >> 1.txt
cat 1.txt
在这个例子中,ls
命令的输出会被追加到 1.txt
文件的末尾。
2.2 输入重定向示例(一)
输入重定向用于将文件内容作为命令的输入。下面是一个简单的例子:
-
创建一个文本文件
dirs.txt
,并添加以下内容:/home/user/Document /home/user/Pictures /home/user/Music
-
使用
ls
命令结合输入重定向来查看这些目录下的文件:ls -l < dirs.txt
这里,
-l
选项用于以长格式显示文件信息。该命令会从dirs.txt
文件中读取目录路径,并列出这些目录中的文件和文件夹详细信息。
2.3 输入重定向示例(二)
另一个示例,假设你有一个文件 subdirs.txt
,其中包含了多个子目录的名字:
subdir1
subdir2
subdir3
你可以通过以下命令查看这些子目录的内容:
ls < subdirs.txt
这个命令会从 subdirs.txt
文件中读取每个子目录的名称,并列出这些子目录中的文件。
3. 文件描述符
在 Linux 系统中,文件描述符(File Descriptors, FD)是用于标识打开文件的整数。常见的文件描述符有三种:
0
:标准输入(stdin)1
:标准输出(stdout)2
:标准错误输出(stderr)
3.1 标准输入、输出和错误输出
你可以通过文件描述符来控制命令的输入输出行为。以下是几个例子:
输出到文件
将命令的输出重定向到文件:
ls > 8.txt # 将标准输出重定向到 8.txt 文件
cat 8.txt # 查看 8.txt 文件内容
错误输出到文件
将命令的错误输出重定向到另一个文件:
abcde > 3.txt 2> 5.txt # 将标准输出重定向到 3.txt,将错误输出重定向到 5.txt
cat 5.txt # 查看 5.txt 文件内容,里面应该包含错误信息
3.2 重定向文件描述符
你也可以通过修改文件描述符来实现更复杂的重定向操作。例如,以下命令将标准输出和标准错误输出都重定向到同一个文件:
ls > 8.txt 2>&1 # 将标准输出和标准错误输出都重定向到 8.txt 文件
cat 8.txt
在这个例子中,2>&1
表示将标准错误输出(文件描述符 2)重定向到标准输出(文件描述符 1)。