sort file1 -o file2
和 和有什么区别sort file1 > file2
?到目前为止,从我所做的事情来看,他们做同样的事情,但也许我错过了一些东西。
问问题
413 次
3 回答
4
以下两个命令只要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
于 2013-11-10T19:55:05.023 回答
2
结果是相同的,但在-o file2
结果文件的情况下是由sort
直接创建的,而在另一种情况下,它是由bash
的标准输出创建并填充的sort
。在 coreutils 的第 450 行中定义的对这两种情况 (和xfopen
)进行同等对待。sort.c
stdout
-o filename
重定向的标准输出sort
更通用,因为它可以用 a|
代替 a重定向到另一个程序>
,该-o
选项使执行变得更加困难(但并非不可能)
该-o
选项对于就地排序很方便,因为重定向到同一文件将导致文件被截断,因为它是由 shell 在调用sort
.
于 2013-11-10T19:57:46.593 回答
1
没有太大区别>
的是标准的unix输出重定向功能。也就是说,“将您原本会在终端上显示的输出写入给定文件” -o 选项更特定于排序功能。这是再次说“将输出写入给定文件”的一种方式
>
可以在工具没有明确写入文件参数或选项的情况下使用。
于 2013-11-10T19:40:05.973 回答