推荐关注↓
作者:执着的花猫Jp
Linux I/O重定向
Linux I/O重定向可以定义为,更改从命令读取输入到命令发送输出的方式。你可以重定向命令的输入和输出。对于重定向符号,可以是<、> 或者 | 。
I/O重定向中的标准流
Bash shell在I/O重定向中有三个标准流:
标准输入(
stdin
):
stdin
流编号为
stdin
0
)。bash shell从
stdin
获取输入。默认情况下,键盘用作输入。

标准输出(
stdout
):
stdout
流编号为
stdout
1
)。bash shell将输出发送到
stdout
。输出将显示。

标准错误(
stderr
):
stderr
流编号为
stderr
2
)。bash shell向
stderr
发送错误消息。显示错误消息。
重定向到文件
每个流都使用重定向命令。单括号'>'或双括号'>>'可用于重定向标准输出。如果目标文件不存在,将创建一个具有相同名称的新文件。
覆盖:带有单括号“>”的命令将覆盖现有的文件内容。
>:标准输出
<:标准输入

2>:标准错误
注意:写“1>”或“>”和“0<”或“<”是一回事。但对于stderr,必须编写“2>”。
用法:

cat >
<fileName>
追加: 带有双括号“>>”的附加命令不会覆盖现有的文件内容。
>>
-标准输出

<<-标准输入

2
>>-标准错误
用法:

cat >>
<fileName>
重定向到程序
重定向到程序管道将流从一个程序重定向到另一个程序。当管道用于将一个程序的标准输出发送到另一个程序时,第一个程序的数据将不会显示在终端上,只显示第二个程序的信息。尽管管道的功能看起来可能与“>”和“>>”相似,但有显著差异。管道将数据从一个程序重定向到另一个程序,而括号仅用于文件的重定向。
用法:
ls *.txt | cat > txtFile

Linux input 重定向

<stdin
bash shell使用stdin获取输入。在输入重定向中,将文件输入命令,并在“<”符号的帮助下执行此重定向。
Syntax
:

cat< <fileName>
[root@localhost ~]
# cat < f.txt
aa

[root@localhost ~]
#
<<文档
EOF(文件结束)可以键入,也可以通过按(ctrl+d)键调用。任何单词都可以代替“EOF”,就像我们使用的“last”一样。
Syntax
:

cat<<EOF> <fileName>
<<字符串
字符串用于将字符串直接传递给命令。
Example
:

base64<<< format.txt

Linux输出重定向

输出重定向用于将一个命令的输出放入文件或另一个命令。
> stdout
stdout使用大于号'>'重定向。当shell遇到'>'号时,它将清除文件:
Example
:

echoHello everyone. > afile.txt
输出文件被擦除
在输出重定向中,在扫描命令行的过程中,shell将遇到“>”符号,并将清除文件。
Example
:

zchoWelcome > afile.txt
nolobber
我们可以在nolobber选项的帮助下,在使用'>'符号时防止文件删除。
Syntax
:

set-o noclobber (防止覆盖)
set+o noclobber (覆盖)
Example
:

echoLearn Linux. > newfile.txt
否定noclobber
重写nolobber意味着您可以在使用'>|'符号设置nolobber时覆盖现有文件。
Syntax
:

command>| <fileName>

Example
:

echoWelcome to JavaTpoint. >| newfile.txt
>>append
append'>>不允许覆盖文件内容,因此显示新的和旧的文件内容。
Syntax
:

command>> <fileName>
Example
:

echoYou all are welcome here. >> newfile.txt

Linux错误重定向

2> stderr
命令'2>'重定向输出的错误,它可以通过重定向错误消息来帮助我们减少显示的混乱。
Example:

zcho hyii
2
>
/dev/null
2> &1
此命令有助于重定向同一文件中的stdout和stderr。
Example
:

newfile.txt
>
abc.txtanderror.txt
2>&1
注意:重定向的顺序非常重要:
ls > dirlist 2>&1
然后,stdout和stderr都将被定向到文件目录列表:
ls2>&1 > dirlist
然后,只有stdout会重定向到目录列表。这是因为,在将stdout重定向到目录列表之前,stderr已经复制了stdout。
- EOF -
加主页君微信,不仅Linux技能+1
主页君日常还会在个人微信分享Linux相关工具资源精选技术文章,不定期分享一些有意思的活动岗位内推以及如何用技术做业余项目
加个微信,打开一扇窗
推荐阅读点击标题可跳转
看完本文有收获?请分享给更多人
推荐关注「Linux 爱好者」,提升Linux技能
点赞和在看就是最大的支持❤️
继续阅读
阅读原文