欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Shell的输入输出

程序员文章站 2022-06-27 19:02:26
shell中 0 通常是标准输入(STDIN) 1 是标准正确输出(STDOUT) 2 是标准错误输出(STDERR)> #覆盖>> #追加< #输入<< #做一个开始标签和结束标签,之间的内容为输入内容ls > file #将命令的正确输出结果保存至file测试:标准输入只读取行......


>   #覆盖
>> #追加
<   #输入
<< #做一个开始标签和结束标签,之间的内容为输入内容
&>   #不管是正确的还是错误的都重定向覆盖
&>> #同上追加

ls > file #将命令的正确输出结果保存至file

需要注意的是他必须是文件

测试:标准输入只读取行
Shell的输入输出
<<后面的标识一个结束字符,与结束字符之间的所有内容为输入内容。
Shell的输入输出

一般情况下linux中每个命令运行时打开三个文件
     文件描述符:0 通常是标准输入(STDIN),默认从stdin读取数据
     文件描述符:1 是标准正确输出(STDOUT),默认向stdout输出数据
     文件描述符:2 是标准错误输出(STDERR),默认向stderr写入错误信息

其实" command > file "就是将stdout重定向到file文件里
同理" command < file "就是将stdin重定向到file文件里读取
如果是错误信息重定向至文件就是" command 2> file ","2>" 之间不可有空格

文件描述符是一个系统的映射文件   " &>file " 和 " >&file " 他们的意思是一样的,都等同于 " file 2>&1 ","&>"和">&"他们是一个整体,不可分开, " & " 是放到后台,意义不一样了。
Shell的输入输出

如下就是将2错误的信息输出至1标准输出里面 #意思呢就是不管你是错误的还是正确的都输出至屏幕
Shell的输入输出

如下:" &> " 就是输出的信息,不管是错误还是正确的
Shell的输入输出

" command < file1 > file2 " #将file1 重定向至命令然后在重定向到file2里面
Shell的输入输出

顺序很重要

他们的顺序很重要,输出的内容可能达不到你想要的结果(我这里是“name”换成了“names”,做错误信息)
Shell的输入输出
#第一种 "xxx > list1 2>&1" #注意:有两个重定向
      第一个:先要将stdout的内容重定向到文件里,这个时候list1文件是这个程序的stdout,正确的信息会重定向list1
      第二个:然后再将stderr重定向到stdout,也就是list1文件,而这时没有错误信息,所以不显示
#第二种"xxx 2>&1 > list2" #注意:有两个重定向
      第一个重定向:先将stderr重定向到stdout里面,此时应该是stderr输出的,但是重定向到stdout,所以会将stderr输出给stdout,屏幕显示出错误信息。
      第二个重定向:错误信息输出完事,而正确信息也没有,所以这个重定向至list2文件没有任何信息。
 

下面是正确信息,可以看到可以正常显示,错误信息的话第一种也是可以收集的
Shell的输入输出

 


 

本文地址:https://blog.csdn.net/csdn_763871244/article/details/107320262