良许Linux教程网 干货合集 Linux I/O重定向详细介绍

Linux I/O重定向详细介绍

image-20240425214605053
image-20240425214605053

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发送错误消息。显示错误消息。

重定向到文件

每个流都使用重定向命令。单括号’>’或双括号’>>’可用于重定向标准输出。如果目标文件不存在,将创建一个具有相同名称的新文件。

覆盖:带有单括号“>”的命令将覆盖现有的文件内容。

>:标准输出
:标准错误

注意:写“1>”或“>”和“0”。

用法:
cat > 

追加: 带有双括号“>>”的附加命令不会覆盖现有的文件内容。

>>-标准输出
>-标准错误
用法:
cat >> 

重定向到程序

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

用法:
ls *.txt | cat > txtFile

Linux input 重定向

bash shell使用stdin获取输入。在输入重定向中,将文件输入命令,并在“

Syntax:
cat 
[root@localhost ~]# cat   
aa
[root@localhost ~]#

EOF(文件结束)可以键入,也可以通过按(ctrl+d)键调用。任何单词都可以代替“EOF”,就像我们使用的“last”一样。

Syntax:
cat  

字符串用于将字符串直接传递给命令。

Example:
base64 

Linux输出重定向

输出重定向用于将一个命令的输出放入文件或另一个命令。

> stdout

stdout使用大于号’>’重定向。当shell遇到’>’号时,它将清除文件:

Example:
echo Hello everyone. > afile.txt

输出文件被擦除

在输出重定向中,在扫描命令行的过程中,shell将遇到“>”符号,并将清除文件。

Example:
zcho Welcome > afile.txt

nolobber

我们可以在nolobber选项的帮助下,在使用’>’符号时防止文件删除。

Syntax:
set -o noclobber    (防止覆盖)  
set +o noclobber    (覆盖)
Example:
echo Learn Linux. > newfile.txt

否定noclobber

重写nolobber意味着您可以在使用’>|’符号设置nolobber时覆盖现有文件。

Syntax:
command >|   
  
Example:
echo Welcome to JavaTpoint. >| newfile.txt

>>append

append’>> 不允许覆盖文件内容,因此显示新的和旧的文件内容。

Syntax:
command >> 
Example:
echo You all are welcome here. >> newfile.txt

Linux错误重定向

2> stderr

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

Example:
zcho hyii 2> /dev/null  

2> &1

此命令有助于重定向同一文件中的stdout和stderr。

Example:
newfile.txt > abc.txt and error.txt 2>&1

注意:重定向的顺序非常重要:

ls > dirlist 2>&1  

然后,stdout和stderr都将被定向到文件目录列表:

ls 2>&1 > dirlist

然后,只有stdout会重定向到目录列表。这是因为,在将stdout重定向到目录列表之前,stderr已经复制了stdout。

image-20240425214618984
image-20240425214618984

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部