Bird
Raised Fist0
Linux CLIscripting~10 mins

stdin redirection (<) in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - stdin redirection (<)
Start command expecting input
↓
Check for '<' operator
Yes↓
Open file specified after '<'
↓
Redirect file content to command's stdin
↓
Command reads input from file
↓
Command executes using file input
↓
Output
This flow shows how the shell redirects input from a file to a command using '<', letting the command read from the file instead of keyboard.
Execution Sample
Linux CLI
cat < input.txt
This command uses stdin redirection to make 'cat' read from 'input.txt' instead of keyboard.
Execution Table
StepActionFile OpenedInput Source for CommandCommand Output
1Shell sees 'cat < input.txt'input.txtstdin redirected from input.txt
2Shell opens 'input.txt' for readinginput.txtstdin redirected from input.txt
3Command 'cat' starts, reads from stdininput.txtreads content of input.txt
4Command outputs content read from input.txtinput.txtreads content of input.txtContent of input.txt displayed
5Command finishes executioninput.txtstdin closedOutput complete
💡 Command finishes after reading all input from 'input.txt' redirected via '<'
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 5
stdinkeyboardfile input.txt openedreading from input.txtclosed
command_outputnonenonebuffering contentcontent displayed
Key Moments - 2 Insights
Why does the command read from the file instead of waiting for keyboard input?
Because the shell redirects stdin from the file using '<', as shown in execution_table step 2 and 3, so the command reads from the file, not keyboard.
What happens if the file after '<' does not exist?
The shell cannot open the file (step 2 fails), so the command does not run and an error is shown.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the command start reading input from the file?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Check the 'Input Source for Command' column in execution_table row for Step 3
According to variable_tracker, what is the state of 'stdin' after Step 5?
Akeyboard
Bclosed
Cfile input.txt opened
Dreading from input.txt
💡 Hint
Look at the 'stdin' row in variable_tracker after Step 5
If the file 'input.txt' is empty, what will the command output be?
AContent of input.txt displayed
BError message
CNo output (empty)
DCommand waits for keyboard input
💡 Hint
Refer to execution_table Step 4 output when reading file content
Concept Snapshot
stdin redirection (<):
Use '<' to send file content as input to a command.
Syntax: command < filename
The command reads from the file instead of keyboard.
If file missing, command errors.
Useful to automate input from files.
Full Transcript
This visual trace shows how stdin redirection works in Linux shell. When you run a command like 'cat < input.txt', the shell sees the '<' operator and opens the file 'input.txt'. It then redirects the command's standard input to read from this file instead of the keyboard. The command reads the file content as if typed by the user and outputs it. After reading all content, the command finishes. If the file does not exist, the shell will show an error and the command won't run. This lets you automate commands that normally wait for keyboard input by feeding them file data instead.

Practice

(1/5)
1. What does the command sort < names.txt do in Linux?
easy
A. It sorts the lines inside the file names.txt and shows the result.
B. It saves the sorted output into names.txt.
C. It renames the file names.txt to sort.
D. It deletes the file names.txt after sorting.

Solution

  1. Step 1: Understand stdin redirection with <

    The < symbol sends the content of names.txt as input to the sort command.
  2. Step 2: Effect of the command

    The sort command reads the file content and outputs the sorted lines to the screen (standard output).
  3. Final Answer:

    It sorts the lines inside the file names.txt and shows the result. -> Option A
  4. Quick Check:

    stdin redirection < sends file content as input [OK]
Hint: Remember: < sends file content as input to command [OK]
Common Mistakes:
  • Thinking < saves output to the file
  • Confusing < with > (output redirection)
  • Assuming the file is modified
2. Which of the following is the correct syntax to use stdin redirection to provide input from a file named input.txt to the command wc -l?
easy
A. < wc -l input.txt
B. wc -l > input.txt
C. wc -l input.txt <
D. wc -l < input.txt

Solution

  1. Step 1: Identify correct stdin redirection syntax

    The correct way to redirect input is command < filename. So wc -l < input.txt is correct.
  2. Step 2: Check other options

    wc -l > input.txt uses > which is output redirection. Options C and D have incorrect order or syntax.
  3. Final Answer:

    wc -l < input.txt -> Option D
  4. Quick Check:

    stdin redirection syntax = command < file [OK]
Hint: Use < between command and filename for input redirection [OK]
Common Mistakes:
  • Using > instead of < for input
  • Placing < after filename
  • Starting command line with <
3. Given a file numbers.txt containing the lines:
3
1
2

What is the output of the command sort < numbers.txt?
medium
A. 1 2 3
B. 3 1 2
C. 2 3 1
D. Syntax error

Solution

  1. Step 1: Understand the input file content

    The file numbers.txt has three lines: 3, 1, and 2.
  2. Step 2: Effect of sort < numbers.txt

    The sort command reads the lines and outputs them sorted ascending: 1, 2, 3.
  3. Final Answer:

    1 2 3 -> Option A
  4. Quick Check:

    sort command sorts lines from stdin [OK]
Hint: Sort reads from stdin when using < redirection [OK]
Common Mistakes:
  • Assuming output is original order
  • Confusing input and output redirection
  • Expecting numbers sorted numerically without options
4. You run the command grep 'apple' < fruits.txt but get no output, even though fruits.txt contains lines with 'apple'. What is the most likely error?
medium
A. The file fruits.txt is empty.
B. You used output redirection instead of input redirection.
C. The pattern 'apple' is case-sensitive and does not match the file content.
D. The command syntax is incorrect; grep does not support input redirection.

Solution

  1. Step 1: Check if input redirection is valid for grep

    grep supports reading from stdin, so grep 'apple' < fruits.txt is valid syntax.
  2. Step 2: Consider case sensitivity of grep

    By default, grep is case-sensitive. If the file has 'Apple' or 'APPLE', it won't match 'apple'.
  3. Final Answer:

    The pattern 'apple' is case-sensitive and does not match the file content. -> Option C
  4. Quick Check:

    grep is case-sensitive by default [OK]
Hint: Check case sensitivity when grep finds no matches [OK]
Common Mistakes:
  • Assuming input redirection is wrong for grep
  • Ignoring case differences in pattern
  • Thinking file is empty without checking
5. You want to count how many lines in data.txt contain the word 'error' ignoring case, using stdin redirection. Which command achieves this?
hard
A. wc -l < grep -i 'error' data.txt
B. grep -i 'error' < data.txt | wc -l
C. grep 'error' > data.txt | wc -l
D. grep -i 'error' > data.txt | wc -l

Solution

  1. Step 1: Use grep with case-insensitive option and stdin redirection

    grep -i 'error' < data.txt reads data.txt ignoring case.
  2. Step 2: Pipe output to wc -l to count matching lines

    Adding | wc -l counts the number of lines output by grep.
  3. Final Answer:

    grep -i 'error' < data.txt | wc -l -> Option B
  4. Quick Check:

    Use grep -i with < and pipe to wc -l [OK]
Hint: Pipe grep output to wc -l for counting lines [OK]
Common Mistakes:
  • Using > instead of < for input
  • Placing wc -l before grep
  • Redirecting output to input file mistakenly
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