以前只会最简单的命令输出内容重导向到剪切板或者其他文件中,今天重温了这一章又学到了很多:至少“标准输出”和“标准错误输出”就是两种不同的方式。
数据流在这里所说的就是命令运行产生的结果,一个命令的运行数据流向图:
输出
输入只有标准输入一种方式,输出有标准输出和标准错误输出两种,所以输入与输出总共有三种:
- 标准输入(stdin): 代码为0,使用<或<<;
- 标准输出(stdout): 代码为1,使用>或>>(>,覆盖写入;>>,追加写入);
- 标准错误输出(stderr): 代码为2,使用2>或2>>;
将某个文件的内容写入剪切板:
1clip < ~/.ssh/id_rsa.pub将正确输出和错误输出分别写入不同的文件中:
1find /home -name .bashrc > list_right 2 > list_error将正确输出和错误输出写入同一文件中:
123find /home -name .bashrc > list 2 > list //错误:正确、错误信息会交叉写入文件,次序混乱(但是这里为啥会次序混乱了呢?)find /home -name .bashrc > list 2>&1 //正确find /home -name .bashrc &> list //正确
输入
<, 这个符号的作用就是:将原本需要由键盘输入的数据,改由文件内容来取代。
利用cat命令创建一个文件
1234cat > catfile //创建文件catfile,命令执行之后用户输入的内容会写入到catfile文件中testingcat file test//按下[ctrl+d]离开文件的编辑,以上两行就会写入catfile文件中使用复制其他文件的内容来取代键盘的输入
1cat > catfile < ~/.bashrc //新建的文件catfile在内容上完全复制~/.bashrc输入结束符<<
1234cat > catfile << "eof"This is a test.Ok now stopeof //这里输入eof即会退出catfile文件的编辑,而不需要[ctrl+d]了,前两行内容会写入文件catfile中