10.2.2 输入/输出重定向
在Linux系统中,执行一个Shell命令行时通常会自动打开3个标准文件:标准输入文件(stdin)、标准输出文件(stdout)和标准错误输出文件(stderr),其对应的文件描述符分别为0、1、2。默认情况下,标准输入文件对应终端键盘,标准输出文件及标准错误输出文件都对应终端屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误输出文件中。若进程的输入数据不是来自标准输入文件,输出数据(或错误信息)不是写向标准输出文件(或标准错误输出文件),则需要进行输入/输出(I/O)重定向。描述I/O重定向的符号有:
〉:输出重定向
〉〉:输出重定向,将信息追加到文件尾
〈:输入重定向
〈〈:实现here文件
(1)输出重定向
如果用户希望将命令的结果保存到一个文件中,而不是在屏幕上显示,就要使用输出重定向。输出重定向的语法格式为:
$命令 〉 文件名
或
$命令 〉〉 文件名
Shell扫描命令行发现有符号“〉”后,就会将命令的执行结果输出到指定文件中,例如,为将当前目录中的文件列表存入mydir中,可以使用下述命令:
$ls 〉 mydir
“〉〉”的功能也是进行输出重定向,但它将输出信息追加到指定文件尾部,例如,为了合并两个文件w1及w2到myfile,可以使用:
$cat w1 〉 myfile
$cat w2 〉〉 myfile
(2)输入重定向
当用户进程的输入信息不是来自键盘时,应使用输入重定向改变进程的输入源。输入重定向的语法格式为:
$命令 〈 文件名
当shell扫描命令行发现“〈”符号时,就从命令行指定的文件中获取输入数据,例如,为显示文件myfile中包含的文本行数,可以使用:
$wc –l 〈 myfile
(3)here文件另一种输入重定向称为here文件。here文件使用重定向操作符“〈〈”,它将一对分隔符之间的正文重定向输入给命令。here文件的语法格式为:
$命令 〈〈 分隔符
输入行
…
输入行
分隔符
这时命令的输入直接来自分隔符后的输入行,直到输入行的行首再次出现分隔符为止。分隔符的作用是指示输入行的开始及结束,它可以是一个字符,也可以是用引号括起来的字符串。下例将一对分隔符“!”之间的正文作为wc命令的输入,统计出正文的行数、单词数和字符数。
$ wc 〈〈 !
this text forms the content
of the here document,which
continues until the end of
text delimiter.
!
4 17 98
(4)错误输出重定向
如果用户希望将命令执行的错误信息保存到一个文件中,而不是直接送到屏幕上显示,应该对标准错误输出进行重定向。标准错误输出重定向的格式为:
$命令 2〉 文件名
当shell扫描命令行发现“2〉”符号时,就会将命令执行时的错误信息输出到指定文件中,例如,为运行程序myprog并使其错误信息输出到文件err-file,可以使用:
$myprog 2〉 err-file
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。