Bird
Raised Fist0
Linux CLIscripting~10 mins

head and tail in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - head and tail
Start
↓
Input File
↓
head: Read first N lines
↓
Output first N lines
↓
tail: Read last N lines
↓
Output last N lines
The commands read a file and output either the first or last N lines, showing the start or end of the file.
Execution Sample
Linux CLI
head -n 3 sample.txt

tail -n 2 sample.txt
Shows the first 3 lines and last 2 lines of the file 'sample.txt'.
Execution Table
StepCommandActionOutput LinesOutput Content
1head -n 3 sample.txtReads first 3 lines3Line1\nLine2\nLine3
2tail -n 2 sample.txtReads last 2 lines2Line4\nLine5
3head -n 3 sample.txtIf file has fewer than 3 lines, outputs all lines2Line1\nLine2
4tail -n 2 sample.txtIf file has fewer than 2 lines, outputs all lines1Line1
5head -n 0 sample.txtReads zero lines, outputs nothing0
6tail -n 0 sample.txtReads zero lines, outputs nothing0
💡 Commands stop after reading requested number of lines or entire file if fewer lines exist.
Variable Tracker
VariableStartAfter head -n 3After tail -n 2After head -n 0After tail -n 0
Output LinesN/A3 lines2 lines0 lines0 lines
Output ContentN/ALine1\nLine2\nLine3Line4\nLine5
Key Moments - 3 Insights
Why does head output fewer lines if the file has less than N lines?
Because head reads up to N lines but stops if the file ends earlier, as shown in execution_table row 3.
What happens if you ask tail or head to output zero lines?
They output nothing, no lines are printed, as shown in execution_table rows 5 and 6.
Does tail read the whole file to get the last lines?
Yes, tail reads from the end to output the last N lines, as shown in execution_table row 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, how many lines does 'head -n 3 sample.txt' output at step 1?
A2 lines
B3 lines
C5 lines
D0 lines
💡 Hint
Check the 'Output Lines' column in execution_table row 1.
At which step does the command output zero lines?
AStep 5
BStep 2
CStep 1
DStep 3
💡 Hint
Look for '0' in the 'Output Lines' column in execution_table.
If the file has only 2 lines, what will 'head -n 3' output according to the table?
A0 lines
B3 lines
C2 lines
DNo output
💡 Hint
See execution_table row 3 about fewer lines than requested.
Concept Snapshot
head and tail commands:
head -n N filename: outputs first N lines
tail -n N filename: outputs last N lines
If file has fewer lines, outputs all lines
-n 0 outputs nothing
Useful to preview start or end of files
Full Transcript
The head and tail commands in Linux let you see the start or end of a file. Head reads the first N lines, tail reads the last N lines. If the file has fewer lines than requested, they output all lines. Asking for zero lines outputs nothing. This helps quickly check file contents without opening the whole file.

Practice

(1/5)
1. What does the head command do by default when run on a text file?
easy
A. Counts the number of lines in the file
B. Shows the last 10 lines of the file
C. Deletes the first 10 lines of the file
D. Shows the first 10 lines of the file

Solution

  1. Step 1: Understand the default behavior of head

    The head command shows the start of a file, by default 10 lines.
  2. Step 2: Compare with other options

    tail shows the end, but head shows the beginning lines.
  3. Final Answer:

    Shows the first 10 lines of the file -> Option D
  4. Quick Check:

    head = first 10 lines [OK]
Hint: Remember: head = start, tail = end of file [OK]
Common Mistakes:
  • Confusing head with tail
  • Thinking head deletes lines
  • Assuming head counts lines
2. Which of the following is the correct syntax to display the last 5 lines of a file named log.txt?
easy
A. tail -n 5 log.txt
B. head -n 5 log.txt
C. tail 5 log.txt
D. head 5 log.txt

Solution

  1. Step 1: Identify the command to show last lines

    tail shows the end of a file, so it is used to show last lines.
  2. Step 2: Use correct syntax with -n option

    The option -n 5 specifies to show 5 lines. So tail -n 5 log.txt is correct.
  3. Final Answer:

    tail -n 5 log.txt -> Option A
  4. Quick Check:

    tail -n 5 shows last 5 lines [OK]
Hint: Use -n with tail to specify number of lines [OK]
Common Mistakes:
  • Using head instead of tail
  • Omitting -n option
  • Using tail without -n for line count
3. Given a file data.txt with 20 lines, what will be the output of head -n 3 data.txt | tail -n 2?
medium
A. Lines 2 and 3 of data.txt
B. Lines 1 and 2 of data.txt
C. Lines 18 and 19 of data.txt
D. Lines 3 and 4 of data.txt

Solution

  1. Step 1: Understand head -n 3 data.txt

    This command outputs the first 3 lines: lines 1, 2, and 3.
  2. Step 2: Apply tail -n 2 on the output

    tail -n 2 takes the last 2 lines of the previous output, so lines 2 and 3.
  3. Final Answer:

    Lines 2 and 3 of data.txt -> Option A
  4. Quick Check:

    head 3 then tail 2 = lines 2 & 3 [OK]
Hint: Pipe head then tail to slice lines from start [OK]
Common Mistakes:
  • Assuming tail works on whole file, not head output
  • Confusing line numbers
  • Thinking tail -n 2 shows first 2 lines
4. You run head -n 5 file.txt but get an error: head: invalid option -- 'n'. What is the likely cause?
medium
A. The file file.txt does not exist
B. The head command version does not support -n
C. You need to use --lines=5 instead of -n 5
D. You must run the command as root

Solution

  1. Step 1: Analyze the error message

    The error says invalid option -- 'n', meaning -n is not recognized.
  2. Step 2: Understand command version differences

    Some older or non-GNU versions of head do not support -n and require different syntax.
  3. Final Answer:

    The head command version does not support -n -> Option B
  4. Quick Check:

    Invalid option error means unsupported flag [OK]
Hint: Check command version if options cause errors [OK]
Common Mistakes:
  • Assuming file missing causes option error
  • Trying to run as root unnecessarily
  • Using wrong syntax without checking version
5. You want to monitor the last 15 lines of a growing log file app.log in real-time but only want to see the newest lines as they appear. Which command combination is best?
hard
A. head -n 15 app.log
B. tail -n 15 app.log
C. tail -n 15 -f app.log
D. head -n 15 -f app.log

Solution

  1. Step 1: Understand the need to see last lines and follow updates

    You want the last 15 lines and to watch new lines as they are added.
  2. Step 2: Use tail with -n 15 and -f

    tail -n 15 -f app.log shows last 15 lines and follows file changes live.
  3. Final Answer:

    tail -n 15 -f app.log -> Option C
  4. Quick Check:

    tail -n 15 -f = last 15 lines + live updates [OK]
Hint: Use tail -f to follow file changes live [OK]
Common Mistakes:
  • Using head which shows start, not end
  • Omitting -f to follow updates
  • Using head -f which is invalid
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard