2013-05-05 90 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已經有了一些內容,並顯示了大小。