15

In Linux if you type

sort < txtfile

is that the same thing as

cat txtfile | sort

1 Answer 1

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.

3
  • 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, 2012 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, 2012 at 4:11
  • @DanielBeck, Regarding efficiency, is sort < txtfile much more efficient than cat txtfile | sort?
    – Pacerier
    Mar 13, 2015 at 11:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .