'|' does not mean 'or', '||' means 'or'.
'|' is a pipe, which redirects the output from the command on the left, to input of the command on the right...
Quote:
For example, what would happen if i type:
grep a * | grep b | grep c
|
This will search every file in the current directory for lines with an 'a' in them, from these results it will search lines for 'b', and then for 'c'...so basically it will print every line from any file that has an 'a' _and_ a 'b' _and_ a 'c' in them.