[英]Bash Sorting Redirection
sort file1 -o file2
和sort file1 > file2
什么區別? 到目前為止,我做的事情與他們做的事情相去甚遠,但也許我錯過了一些事情。
只要file1
和file2
不同,以下兩個命令是相似的。
sort file1 -o file2 # Output redirection within sort command
sort file1 > file2 # Output redirection via shell
讓我們看看當輸入和輸出文件是同一file
時發生的情況,即您嘗試就地排序
sort file -o file # Works perfectly fine and does in-place sorting
sort file > file # Surprise! Generates empty file. Data is lost :(
綜上所述, 以上兩種重定向方法相似但不相同
測試
$ cat file
2
5
1
4
3
$ sort file -o file
$ cat file
1
2
3
4
5
$ sort file > file
$ cat file
$ ls -s file
0 file
結果是相同的,但是在-o file2
情況下,結果文件是直接通過sort
創建的,在其他情況下,文件是由bash
創建的,並用sort
的標准輸出填充。 所述xfopen
在450行中定義sort.c
中的coreutils治療這兩種情況下( stdout
和-o filename
)同樣。
重定向sort
的標准輸出更為通用,因為可以使用|
重定向到另一個程序|
代替>
,它使-o
選項變得更難(但並非不可能)
-o
選項對於就地排序很方便,因為重定向到同一文件將導致文件被截斷,因為它是由shell在調用sort
之前創建(和截斷)的。
沒有太大區別>
是標准的UNIX輸出重定向功能。 這就是說“將您將在終端上顯示的輸出寫入給定文件” -o選項更特定於排序功能。 這是一種再次說“將輸出寫入此給定文件”的方法
>
可以用於沒有專門寫入文件參數或選項的工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.