- This Ecovacs robot vacuum and mop is a sleeper hit, and it handles carpeting like a champ
- I tested DJI's latest flagship drone, and it's straight from the future (with one caveat)
- INE Security Alert: Top 5 Takeaways from RSAC 2025
- This portable Sony speaker replaced my Bose SoundLink Max - while costing hundreds less
- AWS ofrece un adelanto de lo que los CIO pueden hacer con Amazon Q Business
Linux operators: Using |, >, >>, &, &&, !, =, () and many more

In the example below, the head command fails because it wasn’t run with root-level privilege (e.g., using sudo) and, thus, has no access to the /etc/shadow file. The echo command then runs after the error appears.
$ head -4 /etc/shadow || echo oops head: cannot open '/etc/shadow' for reading: Permission denied oops
If you want to see the effect without the error message, you could send the error output of the head command to /dev/null like this:
$ head -4 /etc/shadow 2>/dev/null || echo oops oops
The 2> operator redirects error output – in this case to /dev/null.
Using > and >>
The > and >> operators, unlike | and ||, are tightly related to each other. Still, they have a different though related function. If you run a command like one of those below, you add output of the fortune command to a file, creating it if is doesn’t already exist and overwriting it if it does.
$ fortune > readme $ cat readme 1 bulls, 3 cows. $ fortune > readme $ cat readme Does a one-legged duck swim in a circle?
Notice that, in the example above, the content of the file is replaced.
If you use >> instead, content will be appended to the file if it exists and used to create a new file if it doesn’t.