1

I am new to shell scripting

I keyed in the Command

$ ls -l >out.txt

then I see the output

$ vi out.txt

the contents of the file were

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

i now do this

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

why is there a discrepancy in the output that i received on the terminal and the output that was saved on the file out.txt?

4

4 回答 4

2

第一次跑lsout.txt是空的。

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

于 2013-05-05T14:35:58.337 回答
2

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

于 2013-05-05T14:36:34.077 回答
1

当你跑

ls -l >out.txt

事件的顺序是:

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

在第 3 步之后,out.txt是一个 54 字节的文件,您在第二次调用ls -l.

于 2013-05-05T14:56:04.327 回答
0

...因为您的第一个命令将数据放入out.txt。之后它的尺寸必然更大。

于 2013-05-05T14:36:15.740 回答