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> sample.txt"已创建内容为" a,b,c"的" sample.txt"。再次使用命令" cat> sample.txt" 创建相同的文件" sample.txt",这一次它覆盖了较早的文件内容,并且仅显示" d,e,f"。
追加
带有双括号'>>'的命令不会覆盖现有文件内容。
>>-标准输出
<<-标准输入
2 >>-标准错误
语法:
示例:
看上面的快照,在这里我们再次创建了两个文件在命令" cat >> sample.txt" 中使用" >>"来命名相同的名称。但是这次,内容不会被覆盖,并且所有内容都会显示出来。
重定向到程序中
管道将流从一个程序重定向到另一个。当使用管道将一个程序的标准输出发送到另一个程序时,第一个程序的数据将不会显示在终端上,只会显示第二个程序的数据。
尽管管道的功能可能看起来很相似与">"和" >>"相同,但有显着差异。管道将数据从一个程序重定向到另一个程序,而方括号仅用于文件重定向。
示例:
看上面的快照,命令" ls *。 txt | cat> txtFile" 已将所有" .txt"文件放入新创建的文件" txtFile"中。