shell(9) 重定向操作和不同脚本的互相调用

声明
学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。


1.不同脚本的互相调用

开始前可以使用rm *.sh删掉所有shell脚本避免有干扰。

方法1:
新建一个1.sh输入echo "hello"。再创建一个2.sh输入1.sh然后运行2.sh。

方法2:

将2.sh中改为source ./1.sh. ./1.sh. 1.h source 1.sh可能会找不到文件)


这种脚本间的调用方式在很多场景下都很有用,比如当需要在一个脚本中复用另一个脚本的函数、变量或初始化操作时,可以采用这种方法。

例子1:

# 1.sh
a1="apple"
a2="orange"
# 2.sh
. ./1.sh

echo This is $a1 ,that is $a2.

2.重定向操作

在 Linux 中,重定向是指将命令的输入或输出从默认的位置(例如,标准输入、标准输出、标准错误)重新定向到其他位置。这些操作通常通过符号来实现,可以将输出重定向到文件、从文件读取输入,或者将错误输出和正常输出分别处理。
输出重定向:

>:将输出重定向到文件。如果文件已存在,内容会被覆盖。
>>:将输出附加到文件末尾,如果文件不存在,则会创建文件。

echo "hello" > 1.txt #将hello写入1.txt中,若1.txt已存在则覆盖
echo "hello" >> 1.txt #将hello写入1.txt的末尾
ls > 1.txt #将当前目录的文件名打印到1.txt中
ls > /dev/null #把ls 命令重定向到垃圾桶回收站,执行后,ls没有回显

输入重定向:
<:用于将命令的输入从文件读取,而不是从标准输入(键盘)读取。

# 创建 dirs.txt 文件
/home/kali/下载
/home/kali/图片
/home/kali/音乐

xargs ls -ld < dirs.txt #   xargs 命令将文件内容作为参数传递给 ls -ld ,使用 ls -ld命令结合输入重定向来查看这些目录下的文件 

错误输出重定向:

2>:将标准错误输出重定向到文件,会覆盖文件内容。
2>>:将标准错误输出重定向到文件,并附加到文件末尾。

ls /123.txt 2> error.txt  # ls找不到123.txt就会将错误信息写入 error.txt

标准输出和标准错误的重定向:

&>:将标准输出和标准错误都重定向到文件(会覆盖文件内容)。
&>>:将标准输出和标准错误都重定向到文件,并附加到文件末尾。

文件描述符:
标识打开的文件的一个抽象的数字,每个打开的文件都会被分配一个文件描述符,用于后续的文
件操作
0 :标准输入,这是程序默认的输入来源,通常与键盘关联。在 shell 脚本中,可以使用 < 操作。
符来重定向标准输入,将文件或其他命令的输出作为脚本的输入。
1 :标准输出这是程序默认的输出目的地,通常与屏幕关联。在 shell 脚本中,可以使用 > 操作。
符来重定向标准输出,将脚本的输出保存到文件中。
2 :错误输出,这是程序用于输出错误信息的文件描述符,通常也与屏幕关联。在 shell 脚本中,
可以使用 2> 操作符来重定向标准错误,将错误信息保存到文件中。

例子1:
ls > 1.txt 2> 2.txt

如果ls命令正确,内容输入到1.txt,如果错误,则把错误信息输出到2.txt


例子2:

ls > output.log 2>&1

这条命令会将的标准输出和标准错误输出都写入 output.log 文件,2>&1:将标准错误输出(stderr,文件描述符 2)重定向到标准输出(stdout,文件描述符 1)。这意味着标准错误输出也会被写入到 output.log 文件中。

posted @ 2024-12-16 20:12  空前123  阅读(16)  评论(0)    收藏  举报