15

In Linux if you type

sort < txtfile

is that the same thing as

cat txtfile | sort
tony_sid
  • 14,321
  • 53
  • 141
  • 195

1 Answers1

19

To your title question: No. Getting stdin from file contents (input redirection) is not the same as piping one program's output to another program's input.

But, as your cat actually just prints a file's contents, the result is effectively the same in that example.


But even just the following produce very different results:

$ cat * | sort
$ sort < *

If there's more than one matching file, the latter will produce

-bash: *: ambiguous redirect

since it's just not as flexible as the former, which will cat all matching files, and pipe them as input into sort.

Daniel Beck
  • 110,419
  • 3
    What about... sort *? No useless use of cat, no useless use of indirection, shortest to type, easiest to think of, and I believe GNU sort will treat you to scalability optimizations for very large files (not so sure about that - half remembering something there) – sehe Oct 25 '12 at 23:05
  • 2
    @sehe Probably. I just used the example to show the two are different. This isn't about efficient use of sort. Sort is more flexible thn that though, sure. – Daniel Beck Oct 26 '12 at 04:11
  • @DanielBeck, Regarding efficiency, is sort < txtfile much more efficient than cat txtfile | sort? – Pacerier Mar 13 '15 at 11:55