Shell的输入输出
> #覆盖
>> #追加
< #输入
<< #做一个开始标签和结束标签,之间的内容为输入内容
&> #不管是正确的还是错误的都重定向覆盖
&>> #同上追加
ls > file #将命令的正确输出结果保存至file
需要注意的是他必须是文件
测试:标准输入只读取行
<<后面的标识一个结束字符,与结束字符之间的所有内容为输入内容。
一般情况下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 ","&>"和">&"他们是一个整体,不可分开, " & " 是放到后台,意义不一样了。
如下就是将2错误的信息输出至1标准输出里面 #意思呢就是不管你是错误的还是正确的都输出至屏幕
如下:" &> " 就是输出的信息,不管是错误还是正确的
" command < file1 > file2 " #将file1 重定向至命令然后在重定向到file2里面
顺序很重要
他们的顺序很重要,输出的内容可能达不到你想要的结果(我这里是“name”换成了“names”,做错误信息)
#第一种 "xxx > list1 2>&1" #注意:有两个重定向
第一个:先要将stdout的内容重定向到文件里,这个时候list1文件是这个程序的stdout,正确的信息会重定向list1
第二个:然后再将stderr重定向到stdout,也就是list1文件,而这时没有错误信息,所以不显示
#第二种"xxx 2>&1 > list2" #注意:有两个重定向
第一个重定向:先将stderr重定向到stdout里面,此时应该是stderr输出的,但是重定向到stdout,所以会将stderr输出给stdout,屏幕显示出错误信息。
第二个重定向:错误信息输出完事,而正确信息也没有,所以这个重定向至list2文件没有任何信息。
下面是正确信息,可以看到可以正常显示,错误信息的话第一种也是可以收集的
本文地址:https://blog.csdn.net/csdn_763871244/article/details/107320262