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.
Increase ad revenue 50-250% with Ezoic