Unix重定向功能能够给我们带来什么
合并文件的名字,通过重定向符号会把这个结果写入到合并后的文件中.而这个命令中的echo命令是为了在表头列于C语言代码之间插入一空行.也就是说,执行这个命令后程序文件名将显示在表头列里,这样代码列表清单的最前面就好像建立了一个目录一样.
笔者再强调一次,在使用标准输出重定向功能的时候,当一个命令的输出被重定向到一个文件时,这个输出文件由shell在命令执行前创建.如果输出文件不存在,则shell 会在命令执行前自动创建它;如果输出文件已经存在,则shell会覆盖这个已经存的文件.为此在使用这个功能的时候,最好能够通过ls等命令查看这个文件是否存在,以免误操作而给用户带来不必要的损失.
二、把错误信息写入到文本文件中. 现在系统工程师在shell 中执行一个脚本文件.这个脚本文件比较复杂,可能需要花费半个小时的时间.系统工程师可能还有其他事情要做,故会暂时离开.为此系统工程师希望能够把程序运行中的错误信息写入到一个文本文件中.此时该如何处理呢? 拥有帝国一切,皆有可能。欢迎访问phome.net run.sh 2>error.txt 这个命令跟上面提到的标准输出重定向功能类似,都是利用了重定向符号.不过在这个命令中,重定向符号前面多了一个数字2,是什么意思呢?其实这个数字2在Unix系统中有一个特殊的含义,叫做文件描述符.在shell中有三个特殊的文件,他们跟Unix系统的终端有关.这三个特殊文件实际上吧命令的输出与输入的结果当作字符流来处理.一个流就似乎一个字节序列.当系统管理员登陆到系统时,shell就会自动创建这三个流文件,每个流文件对应一个默认的设备(即所谓的终端).这三个特殊的文件分别为标准输入(这个流文件代表输入,通常情况下来自键盘,不包括鼠标的输入)、标准输出(这个流文件通常代表着屏幕,它输出到屏幕上)、标准错误(这个流文件代表错误信息,来自于相关命令或者shell的错误信息).任何一个使用流的命令都可以使用这些流文件.而这三个文件在Unix系统中还都对应一个称为文件描述符的数字代码(就是上面提到的数字2).在打开一个文件时需要用到文件的路径,而对这些流文件进行读写操作时则需要用到文件描述符.在Unix操作系统内核中为系统中每一个进程创建一张文件描述符表.默认情况下这个文件描述符表中的前三行就跟这三个流文件相关,即0表示标准输入、1表示标准输出、2表示标准错误信息.重定向符号前面往往会因含这些文件描述符.如上面的Cat A1.TXT、A2.TXT > new.txt标准输出命令,其实跟Cat A1.TXT、A2.TXT 1> new.txt是等价的. 但是在用到标准错误这个流文件时,这需要注意,系统工程师需要显示的说明这些描述符号.如在运行某个程序时,需要用到一个参数文件.而这个文件不存在或者已经损坏的情况下,则默认情况下会有错误信息显示在屏幕上.这个在Unix操作系统中就叫做标准错误流,它的默认输出目标是屏幕终端.但是如果要把这个标准错误流重定向到一个系统工程师指定的文件中,则需要在重定向符号前面显示的加入文件描述符2,即run.sh 2>error.txt. 也许这么说还不够直接,笔者可以把这个命令写成run.sh >info.txt 2>error.txt.这个命令表示什么意思呢?也许在run.sh这个程序运行的过程中,可能没有什么错误.此时在屏幕上就会显示这个程序正常运行的结果.这个就是标准输出流.这个信息会纪录在info.txt文件中.如果这个程序在运行中某些原因出现了运行错误,则这些标准错误信息会被记录到error.txt文件中.也就是说,在重定向符号面前加入2字,主要是为了区分标准输出流与标准错误流.为此需要把标准错误流重定向到一个文件中的时候,要显示的使用文件描述符2.否则的话,系统会把其当作标准输出流来处理. 拥有帝国一切,皆有可能。欢迎访问phome.net 可见重定向功能跟其他功能结 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |