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 文件中。

浙公网安备 33010602011771号