27

I've been using pipes and redirects for a long time and just realized that I don't know exactly how they are different. I just know that if you want to store the output in a file, then you use >. Otherwise most of the time you just use |. Can someone explain the difference between pipes and redirects?

Cfinley
  • 1,435
  • 3
  • 14
  • 20
tony_sid
  • 14,001
  • 51
  • 139
  • 194
  • possible duplicate of [Is backwards redirection the same as a pipe?](http://superuser.com/questions/277680/is-backwards-redirection-the-same-as-a-pipe) – Wuffers May 05 '11 at 03:37

1 Answers1

32

The both do the same basic thing; they redirect a file descriptor of the process executed. The difference lies in how. A pipe connects the stdout of one process to the stdin of another, whereas redirection redirects from/to a file (> from stdout to a file, < from a file to stdin).

Ignacio Vazquez-Abrams
  • 111,361
  • 10
  • 201
  • 247
  • 2
    The distinction sort of blurs in Linux and other systems that have `/dev/fd`. For example, if you run `echo foo > >(somecommand)`, it will expand to `echo foo > /dev/fd/3`. It's still redirection, but to a process. – u1686_grawity Apr 30 '11 at 18:43