2013-05-05 92 views
1

重定向数据我是新来的shell脚本矛盾在LinuxShell

我的命令键

$ ls -l >out.txt 

然后我看到输出

$ vi out.txt 

该文件的内容是

total 8 
-rw-rw-r-- 1 arun arun 0 May 5 19:55 out.txt 

i现在做这个

$ ls -l 
total 12 
-rw-rw-r-- 1 arun arun 54 May 5 19:55 out.txt 

为什么会出现在我的终端和保存在文件out.txt输出上接收到的输出的差异?

回答

1

当你跑

ls -l >out.txt 

事件的顺序是:

  1. 打开写入文件out.txt。最初,文件大小是0字节。
  2. 运行ls -l,它看到空文件out.txt
  3. ls -l的输出写入out.txt

在步骤3之后,out.txt是一个54字节的文件,您在第二次调用ls -l时观察到该文件。

+0

为什么downvote? – chepner 2013-05-10 21:29:11

2

您第一次运行ls,out.txt为空。

第二次运行ls,out.txt包含ls的结果,因此不为空。

0

...因为您的第一条命令将数据存入out.txt。此后它的规模必然更大。

2

只要shell解析了命令,并看到使用stdout去out.txt,它就在您的目录中打开out.txt,大小为0字节。当你稍后在shell中执行ls -l时,out.txt已经有了一些内容,并显示了大小。