A build is run as `make 2>&1`. Every line of the combined stream must be added to build.log, which already holds the output of earlier builds and must not lose it, and the same complete stream must still reach `grep -i warning`. Which pipeline does this?
LPIC-1 Exam 101-500, objective 103. GNU and Unix commands medium
Machine-checked — no person has signed for it. This question was read against the source cited below by an automated pass, which found no contradiction. That is a weaker claim than it sounds: the same kind of process wrote the question, so it can confirm its own mistake.
Treat it as a good draft rather than as settled fact, and read the source below before you rely on it. It is not used in mock exams here — only questions a person has signed for are.
How these questions are written — where each question comes from, what the verification ledger records, and what happens when one is found wrong.
The options
Correct make 2>&1 | tee -a build.log | grep -i warning
Correct. tee writes its input to build.log in append mode and passes the same input on unchanged to its standard output, which is the pipe into grep.
Not correct make 2>&1 | tee build.log | grep -i warning
Wrong. Without -a, tee truncates build.log to zero length when it opens it, so the earlier builds are lost.
Not correct make 2>&1 >> build.log | grep -i warning
Wrong. This sends standard output to the file, so grep receives only what 2>&1 duplicated earlier, and the redirection order means the two streams are split rather than both logged.
Not correct make 2>&1 | grep -i warning | tee -a build.log
Wrong. grep filters first, so only the warning lines reach tee and only those are appended; the rest of the build output is never logged.
Why
tee copies standard input to standard output and simultaneously to each file named on its command line, which lets a stream be captured in the middle of a pipeline without interrupting it. -a (--append) opens the files with O_APPEND instead of truncating them. Position matters: everything upstream of tee is logged, everything downstream only sees what earlier filters let through.
Where this comes from
- Cited
- manual page tee(1)
Practise this
Reading one question is not practice. The trainer will draw a short set from objective 103 and space the ones you get wrong.
More questions on this objective
- A user starts a new terminal window in a running graphical desktop session, which launches bash as an interactive shell that is NOT a login shell. Which file in the user's home directory does bash read in that case? machine-checked
- In bash, which history expansion re-runs the entire previous command line? machine-checked
- Which bash command prints the literal five characters $USER instead of the current user name? machine-checked
- You want /opt/bin searched for executables, after all the directories already in PATH, in the current bash session and in every command started from it. Which command does that? machine-checked
- There is a passwd manual page in section 1 (the command) and another in section 5 (the /etc/passwd file format). Which command opens the section 5 page? machine-checked
- Select the TWO true statements about shell variables and the environment in bash. machine-checked