更換文件中使用「之類的x.txt> x.txt」爲什麼說「之類的x.txt> x.txt」清除文件的內容,但「排序x.txt> y.txt」寫道:排序文件y.txt如你所願Cygwin中
Q
Cygwin中
0
A
回答
1
在調用命令sort x.txt
之前,shell會截斷x.txt
,因此排序命令運行時沒有任何可排序的內容。
幾乎所有的殼這樣的行爲(包括Windows CMD窗口);它不僅僅是Cygwin的一個特色。
1
當您運行的命令,你就相當於告訴外殼打開x.txt寫(>>將被追加,這將是不同的),然後將「sort x.txt」的結果轉儲到它中 - 它剛剛發生,因爲它打開文件進行寫入,首先,它有效地啓動一個名爲x.txt的新文件,然後執行排序x.txt,排序一個空文件。
我不是積極的,爲什麼時機,因爲它是 - 但我相信它可以讓你從試圖運行一個命令寫入到一個文件你沒有寫權限等。(又名 - 它打開它寫,首先,以確保它可以)。
0
sort a > b
開放A和B具有共同的閱讀和b進行寫入。作爲寫作b,它將被清除。
0
當執行命令時,首先殼的打開輸出文件將輸出寫入方案,它有效地截斷爲長度爲零。然後它啓動排序命令,並在sort x.txt > x.txt
這種情況下,這新排空文件x.txt
。
0
當shell看到它看到sort命令的輸出需要將進入文件x.txt
命令sort x.txt > x.txt
,所以它打開文件x.txt
寫入,這將清除出該文件的內容,如果文件已經有了任何東西。
如果你想避免它,你可以重定向排序輸出到一個臨時文件,並稍後重命名臨時文件x.txt
相關問題
- 1. Cygwin中
- 2. Cygwin中
- 3. Cygwin中
- 4. Cygwin中的off64_t
- 5. SYS/RESOURCE.H Cygwin中
- 6. -bash:_fzf_orig_completion_g ++:Cygwin中
- 7. 的readlink Cygwin中
- 8. Cygwin中的Unicode .bashrc
- 9. 腳本不Cygwin中
- 10. 設置LD_LIBRARY_PATH Cygwin中
- 11. 安裝obspy Cygwin中
- 12. 無法在Cygwin中
- 13. Cygwin中的bash shell
- 14. cygwin中的libpython2.7.dll.a
- 15. cygwin&cygcheck
- 16. ghostscript cygwin
- 17. cygwin + rsync
- 18. Cygwin make找不到cygwin命令
- 19. redhat cygwin vs cygwin?任何差異?
- 20. 在cygwin 1.7中生成的.exe沒有在cygwin上運行1.52
- 21. Cygwin上的Lighttpd從Cygwin shell中有不同的PATH變量
- 22. 安裝Cygwin後在Cygwin中出現故障
- 23. cygwin不包含mysql.h ..我怎樣才能得到它在cygwin中?
- 24. Cygwin中的mkstemp()和fdopen()1.7.28
- 25. 在cygwin中運行gcc
- 26. 在cygwin中編譯OpenEXR
- 27. 在cygwin中使用xmllint
- 28. Cygwin中的Nginx - nchan模塊
- 29. cygwin中的ndk-build錯誤
- 30. 在Cygwin中創建文件
這是有關的bash shell腳本。我不確定共識是什麼,但是這對於superuser.com可能更好,因爲它不是關於編程本身。 –
這不是cygwin的具體行爲... –
我不確定你的意思是「如你所料」。如果您發出截斷它的命令,我希望x.txt爲空。 –