A script must store the number of lines in /var/log/syslog in a variable, so the output has to be the bare number with no file name after it. Which command produces exactly that?

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 wc -l < /var/log/syslog

Correct. The shell opens the file and hands it to wc as standard input, so wc has no file name to report and prints only the count.

Not correct wc -l /var/log/syslog

Wrong. When wc is given a file name as an operand it prints the count followed by that name, so the variable would contain two fields.

Not correct wc --lines /var/log/syslog

Wrong. --lines is only the long spelling of -l; the operand is still a file name, so the name is printed alongside the count.

Not correct wc -L < /var/log/syslog

Wrong unit. -L prints the length of the longest line, not the number of lines, although the redirection does correctly suppress the file name.

Why

Many filters behave differently depending on whether they open a file themselves or read a stream: given operands they label the output with the file name, given standard input they have no name to print. Redirecting with < is therefore the standard trick when the count must be machine-readable, as in `lines=$(wc -l < file)`. The same distinction explains why `cat file | wc -l` also prints a bare number.

Where this comes from

Cited
manual page wc(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.

Practise LPIC-1 Exam 101-500

More questions on this objective

All questions on GNU and Unix commands

Practise LPIC-1 Exam 101-500