📜  Linux I / O重定向

📅  最后修改于: 2020-12-08 03:10:37             🧑  作者: Mango

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 > 

例:

cat > sample.txt

查看上面的快照,命令“ cat> sample.txt”创建了内容为“ a,b,c”的“ sample.txt”。使用命令“ cat> sample.txt”再次创建相同的文件“ sample.txt”,这一次它覆盖了较早的文件内容,并且仅显示“ d,e,f”。

附加

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

  • >>-标准输出
  • <<-标准输入
  • 2 >>-标准错误

句法:

cat >> 

例:

cat >> sample.txt

查看上面的快照,在这里我们再次在命令“ cat >> sample.txt”中使用“ >>”创建了两个相同名称的文件。但是这次,内容不会被覆盖,并且所有内容都会显示出来。

重定向到程序

管道将流从一个程序重定向到另一个程序。当使用管道将一个程序的标准输出发送到另一个程序时,第一个程序的数据将不会显示在终端上,而只会显示第二个程序的数据。

尽管管道的功能可能看起来与“>”和“ >>”的功能相似,但有显着差异。管道将数据从一个程序重定向到另一个程序,而方括号仅用于文件重定向。

例:

ls *.txt | cat > txtFile

查看上面的快照,命令“ ls * .txt | cat> txtFile”已将所有“ .txt”文件放入新创建的文件“ txtFile”中。