file $cat < file some text here $cat < file > file.back $cat < file.back some text here " />
红联Linux门户
Linux帮助

关于文件读取的疑问

发布时间:2012-08-27 10:00:38来源:红联作者:胶头滴管3
在学习中遇到这个问题:
代码:$echo "some text here">file
$cat < file
some text here
$cat < file > file.back
$cat < file.back
some text here
$cat < file >file
$cat < file

这是一篇文章上的,重点是说明为什么最后 $ cat < file 会输出空白
书上的解释:根据 I/O优先级,在stdout 与 stderr 的管道准备好了 才会将stdin读入。
因此 $cat file 的执行是:先>file 后 不明白的地方:在 $cat < file > file.back 执行中 , file.back是未定义的,属于新创建的文档
根据执行的优先级,file.back 不应该也是空白文档吗,为什么会有输出?

还请大侠多指教,在这先谢谢啦
文章评论

共有 1 条评论

  1. 相思爱文 于 2012-08-27 10:19:32发表:

    [i=s] 本帖最后由 相思爱文 于 2012-9-3 07:36 编辑 [/i]

    $cat < file >file
    这样的命令是错误的
    需要执行类似功能,就加个临时文件
    cat tmp&&cat < tmp > file

    $cat < file > file.back
    把文件file内容做为输入,最终结果输出到file.back,不加> file.back则输出到屏幕

    I/O优先级之类不用考虑,按顺序执行。
    linux是为了应用,不是为了考试。有些特殊例题,了解一下就可以,应用时尽量避免。
    深入原理,就要读源代码,还要依赖具体环境。