14

In Linux if you type

sort < txtfile

is that the same thing as

cat txtfile | sort
tony_sid
  • 14,001
  • 51
  • 139
  • 194

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
  • 109,300
  • 14
  • 287
  • 334
  • 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