I/O重定向与管道
一个程序最基础的部分就是输入数据,通过指令对其进行加工,输出出一个结果。在这个过程中,我们输入的数据(Input)和我们输出的数据(Output)合称为I/O设备。通常数据输入来自于我们的键盘和鼠标,即人为的输入。我们称这个输入叫做标准输入(STDIN)–0;而输出到终端端口的正确结果我们叫做标准输出(STOUT)–1;输出的错误结果叫做标准错误(STERR)–2。I/O重定向的意思就是改变默认的输入输出方式,即重新定义输入的方式,使标准输入不仅仅来自键盘,也可以来自上一个命令的标准输出等。
把标准输出和错误输出重定向到文件
改变文件的输出位置,将其输出到指定文件中,其中包括标准输出和标准错误。对于标准输出我们可以通过 ” > ”来重定向(原文件可不存在),对于标准错误通过” 2> ” 来重定向。具体操作格式为:
命令 操作符号 文件名
通过某些命令产生新的输出,通过操作符号将其输入到文件中(而不是默认的输出到屏幕中)
也可以通过符号”&>和2>&1″将两种输出重定向到同一文件。若目标文件中有数据,符号”>”将清空原有数据并覆盖。可使用符号”>>”追加到目标文件,标准错误同理。
从文件中导入标准输入
从文件中导入标准输入,不在通过人为的敲打字符,我们称之为输入重定向,通过符号”<“实现。可通过输入重定向将需要的数据通过命令来输入。具体操作格式:
命令 操作符号 文件名
通过某些命令来改变文件的数据使其作为标准输入。(例如tr命令)
tr命令
tr [optins] [set1] [set2]
tr命令可删除或转换字符(将第一字符集set1的内容转换为set2),通过tr命令我们可以修改文本后将其作为标准输入。例如tr ‘a-z’ ‘A-Z’就是将指定文本的小写字母转换为大写字母。tr命令也可预定义字符集,即tr ‘[:lower:]’ ‘[:upper:]’
常用的选项
-c :取字符集的补集
-s:将连续重复的字符转换为一个字符
-d:删除字符集里面的字符
-t:将第一字符集的内容转换成第二字符集的内容
单行重定向与多行重定向
使用单行重定向时,在某些交互式重定向中(如’cat > file’),输入文本后需要Ctrl+d退出,而且输出的是纯文本,并不能识别命令。多行重定向可以改变这些缺陷,多行重定向就是在文本开始时设置终符’>>EOF'(此时EOF为终止符)只有输入终止符才算结束输出,而且多行重定向中可识别命令,使重定向的文本内容更加灵活。
管道
管道技术就是使用符号”|”将多个命令链接在一起,使前一个命令的标本输出作为后面命令的标准输入。例如cmd1|cmd2|cmd3中,首先将cmd1的标准输出作为cmd2的标准输入,再将其标准输出作为cmd3的标准输入,以此类推。管道技术默认不可转换标准错误,我们可以通过”2>&1和|&”将其转换。
我们也可以在管道中使用tee命令将输出重定向到多个目标。即在管道中加入”tee -a file”,这样我们就可以在管道的中间查看和记录不同阶段的输出,便于在出现问题时排除故障。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88644