Bash, the shell commonly found on modern Linux systems, has a well-deserved reputation for being a tremendously complicated piece of software. The man page is more than three thousand lines long — what for most other programs would be the “pocket reference manual” is in this case more like a hundred-page book! But it’s everywhere, so if you want to do shell scripting, you have to know Bash. (To be fair, other shells can be even weirder) I’ve been working with this shell for a long time, and over the years I’ve come to terms with most of its wacky features: parameter expansion, quoting, variable substitution, job control, arrays, here strings, arithmetic evaluation, signal handling, and more. But I have never been able to understand I/O redirection.
Now, I’m not talking about the basics. Of course I knew how to use the simple examples; for instance, I learned early on that
command >output.txt >errput.txt
means that anything the
command prints to its standard output stream winds up in
output.txt and anything it prints to its standard error winds up in
errput.txt. I know that you can “merge” standard output and …