sort file1 -o file2
とはどう違いsort file1 > file2
ますか?私がやったこととはかけ離れていますが、彼らは同じことをしていますが、おそらく何かが欠けています。
3 に答える
file1
次の 2 つのコマンドは、と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 :(
要約すると、上記の 2 つのリダイレクト方法は似ていますが、同じではありません。
テスト
$ 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
。coreutils の 450 行で定義されている は、両方のケース (とxfopen
)を同等に扱います。sort.c
stdout
-o filename
の標準出力のリダイレクトは、 aの代わりに a をsort
使用して別のプログラムにリダイレクトできるため、より一般的です。これは、オプションにより実行がより困難になります (ただし、不可能ではありません)。|
>
-o
-o
の呼び出し前にシェルによって作成 (および切り捨て) されるため、同じファイルへのリダイレクトによって切り捨てられたファイルが生成されるため、このオプションはその場での並べ替えに便利ですsort
。
>
標準の UNIX 出力リダイレクト機能と大きな違いはありません。つまり、「端末に表示する出力を指定されたファイルに書き込む」ということです -o オプションは、ソート機能により固有です。これは、「この指定されたファイルに出力を書き込む」と再度言う方法です。
The >
can be used where a tool does not specifically have a write to file argument or option.