2014-05-02 110 views
0

为什么sort -c输出没有被重定向到文件temp.txt? 如果删除-c,它确实重定向,如下所示:基于sort命令的文件sort -c输出被重定向到一个文件:Linux命令

$ cat numericSort 
33:Thirty Three:6 
11:Eleven:2 
45:Forty Five:9 
01:Zero One:1 
99:Ninety Nine:9 
18:Eighteen:01 
56:Fifty Six:4 
78:Seventy Eight:2 


$ sort numericSort > temp.txt 


$ cat temp.txt 
01:Zero One:1 
11:Eleven:2 
18:Eighteen:01 
33:Thirty Three:6 
45:Forty Five:9 
56:Fifty Six:4 
78:Seventy Eight:2 
99:Ninety Nine:9 


$ rm temp.txt 


$ sort -c numericSort > temp.txt 
sort: numericSort:2: disorder: 11:Eleven:2 


$ cat temp.txt 
# No Output Here 

回答

4

sort -c输出去stderr,不stdout

如果你想重定向来代替:

$ sort -c numericSort 2> temp.txt 
+1

+1;应该注意的是,POSIX指定使用'-c'产生NO输出(“不应该产生输出;只有退出代码会受到影响。” - http://man.cx/sort),所以'stderr '输出(至少)GNU'sort'和BSD'sort'在输入未被排序的情况下产生的是非POSIX扩展。 – mklement0

3

-c,--check,--check =诊断-第一

  check for sorted input; do not sort 

检查给定文件是否已经排序:如果他们不 所有排序,打印错误消息和退出与1

所以你的命令sort -c numericSort > temp.txt基本上只是检查文件是否numericSort排序与否状态。如果未在STDERR上排序打印错误,并且因此看不到任何输出到temp.txt。也许你要重定向STDERR,而不是像

sort -c numericSort 2> temp.txt 
相关问题