Is backwards redirection the same as a pipe?

11

In Linux if you type

sort < txtfile

is that the same thing as

cat txtfile | sort

tony_sid

Posted 2011-05-01T11:48:44.857

Reputation: 11 651

Answers

17

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

Posted 2011-05-01T11:48:44.857

Reputation: 98 421

@DanielBeck, Regarding efficiency, is sort < txtfile much more efficient than cat txtfile | sort? – Pacerier – 2015-03-13T11:55:27.637

3What 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 – 2012-10-25T23:05:15.493

1@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 – 2012-10-26T04:11:48.673