- What are file descriptors?
A handle to files or devices used by Linux as an interface for input/output.
- What do the terms stdin, stdout and stderr mean?
- stdin, standard input. Used for input to commands.
- stdout, standard output. Used for normal output of commands.
- stderr, standard error. Used for error output of commands.
- How to stdin, stdout and stderr map to the default file descriptors?
stdin is bound to fd0, stdout to fd1, and stderr to fd2.
- What is the difference between the output redirections >, 1> and 2>?
> and 1> are equal, and refer to redirecting stdout. 2> is used to redirect stderr.
- What is the difference between > and >>?
> will overwrite the file if it already has content, while >> will append to the file.
- How can both stdout and stderr be redirected at the same time?
- By using &> (and &>>)
- By binding stderr to stdout, using 2>&1
- By piping with |&
- Which special devices can be used to act as a black hole for output?
/dev/null and /dev/zero.
- What does a pipe do, with regards to redirections?
It binds the stdout/stderr of a command to the stdin of another command.
- How can we send output to both the terminal and a log file?
By piping through the tee command, preferably with |& so both stdout and stderr is forwarded.
- What is a typical use-case for a here string?
We can use a here string if we want to supply input directly to stdin of a command. bc is a good example of this.