A program that reads data from standard input, changes it, and writes to standard output, is a filter. "sed" is a filter. "ls" is not.
While many programs are written to act like a filter when they aren't given any file arguments, when a Unix person gives you an exasperated look and says "it's a filter" with that unmistakable tone of "Sheesh, you are an idiot", what they mean is that it is ONLY a filter: it doesn't take command line file arguments and you have to feed its input to it. An example would be SCO's lponlcr, which adds carriage returns to Unix linefeed style line endings. You can only use it in a pipeline; it takes no arguments.
For those of us who love Unix, filters and the fact that so many Unix programs can be used that way are a big part of why we love it, and Windows programs typical inability to grasp that concept is a big part of the disdain we express.
Got something to add? Send me email.
More Articles by Tony Lawrence © 2011-07-05 Tony Lawrence
[This] reminds me of a quotation from somebody that, whenever he tried to explain the logical structure of a programming language to a programmer, it was like a cat trying to explain to a fish what it feels like to be wet. (Saul Gorn)