Bird
Raised Fist0
Linux CLIscripting~5 mins

Pipe operator (|) in Linux CLI - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you want to use the output of one command as the input for another command. The pipe operator (|) connects commands so data flows smoothly between them without saving to a file.
When you want to count how many files are in a folder by listing them and then counting the lines.
When you want to find a specific word in a list of running processes.
When you want to sort a list of users alphabetically after listing them.
When you want to see only the top few lines of a long output.
When you want to filter system logs to show only error messages.
Commands
This command lists all files and folders in long format, then counts how many lines the list has. It tells you how many items are in the current directory.
Terminal
ls -l | wc -l
Expected OutputExpected
12
→
-l - Lists files in long format with details
This command shows all running processes and then filters the list to show only those related to 'sshd'. It helps find if the SSH service is running.
Terminal
ps aux | grep sshd
Expected OutputExpected
root 1234 0.0 0.1 123456 2345 ? Ss 10:00 0:00 /usr/sbin/sshd -D user 5678 0.0 0.0 234567 1234 pts/0 S+ 10:05 0:00 grep sshd
→
aux - Shows all processes with detailed info
This command reads the system log file and filters lines containing the word 'error'. It helps quickly find error messages in logs.
Terminal
cat /var/log/syslog | grep error
Expected OutputExpected
Jun 10 10:00:01 myhost systemd[1]: error: Failed to start service Jun 10 10:05:23 myhost kernel: error: Disk failure detected
Key Concept

If you remember nothing else from this pattern, remember: the pipe (|) sends the output of one command directly into another command as input.

Common Mistakes
Using a space before or after the pipe incorrectly, like 'ls -l |wc -l' without spaces.
The shell requires spaces around the pipe to recognize it as a separate operator.
Always put spaces before and after the pipe: 'ls -l | wc -l'.
Trying to pipe commands that do not produce output or expect input, like 'cd /home | ls'.
'cd' changes directory and does not output data, so piping it to 'ls' does nothing useful.
Run 'cd /home' first, then run 'ls' separately.
Using pipe when you want to save output to a file instead of passing it to another command.
Pipe sends output to another command, not to a file, so the output won't be saved.
Use redirection operator '>' to save output to a file, e.g., 'ls -l > files.txt'.
Summary
The pipe operator (|) connects commands by sending output from one as input to another.
It helps combine simple commands to perform complex tasks without temporary files.
Always use spaces around the pipe and ensure the first command produces output the second can use.

Practice

(1/5)
1. What does the pipe operator | do in Linux command line?
easy
A. Sends the output of one command as input to another command
B. Runs two commands simultaneously
C. Redirects output to a file
D. Comments out a line in a script

Solution

  1. Step 1: Understand the pipe operator function

    The pipe operator | takes the output from the command on its left side.
  2. Step 2: Connect output to input of next command

    This output is then passed as input to the command on the right side of the pipe.
  3. Final Answer:

    Sends the output of one command as input to another command -> Option A
  4. Quick Check:

    Pipe operator = send output to next command [OK]
Hint: Pipe connects output to input of next command [OK]
Common Mistakes:
  • Thinking pipe runs commands in parallel
  • Confusing pipe with output redirection >
  • Assuming pipe comments code lines
2. Which of the following is the correct syntax to use the pipe operator to list files and then count them?
easy
A. ls & wc -l
B. ls > wc -l
C. ls || wc -l
D. ls | wc -l

Solution

  1. Step 1: Identify correct pipe syntax

    The pipe operator is |, which connects commands by passing output to input.
  2. Step 2: Check command usage

    ls | wc -l lists files and counts lines, which is correct syntax.
  3. Final Answer:

    ls | wc -l -> Option D
  4. Quick Check:

    Pipe syntax uses | between commands [OK]
Hint: Use single | to pipe commands, not > or & [OK]
Common Mistakes:
  • Using > which redirects output to file
  • Using & which runs commands in background
  • Using || which is logical OR, not pipe
3. What is the output of the command: echo -e "apple\nbanana\ncherry" | grep "an"?
medium
A. apple cherry
B. apple banana cherry
C. banana
D. No output

Solution

  1. Step 1: Understand the echo command output

    echo -e "apple\nbanana\ncherry" outputs three lines: apple, banana, cherry.
  2. Step 2: Apply grep filter with "an"

    grep "an" filters lines containing "an", which matches only "banana".
  3. Final Answer:

    banana -> Option C
  4. Quick Check:

    grep filters lines with 'an' = banana [OK]
Hint: grep filters lines containing the pattern [OK]
Common Mistakes:
  • Expecting all words printed on one line
  • Ignoring newline characters in echo
  • Thinking grep matches partial words only
4. Identify the error in this command: cat file.txt | | grep "error"
medium
A. No error, command runs fine
B. Extra pipe operator causes syntax error
C. grep command is misspelled
D. Missing filename after cat

Solution

  1. Step 1: Analyze the pipe usage

    The command has two pipe operators | | consecutively, which is invalid syntax.
  2. Step 2: Understand correct pipe usage

    Only one pipe operator should separate commands; extra pipes cause errors.
  3. Final Answer:

    Extra pipe operator causes syntax error -> Option B
  4. Quick Check:

    Double pipes cause syntax error [OK]
Hint: Use single | between commands, no doubles [OK]
Common Mistakes:
  • Ignoring extra pipe and expecting output
  • Thinking missing filename is the error
  • Assuming grep is misspelled
5. You want to find how many lines in log.txt contain the word "fail" but ignore case. Which command correctly uses pipes to do this?
hard
A. cat log.txt | grep -i fail | wc -l
B. grep fail log.txt | wc -l
C. cat log.txt > grep -i fail | wc -l
D. grep -i fail | cat log.txt | wc -l

Solution

  1. Step 1: Use cat to output file content

    cat log.txt outputs the file content to pipe.
  2. Step 2: Use grep with -i to ignore case

    grep -i fail filters lines containing "fail" ignoring case.
  3. Step 3: Count lines with wc -l

    wc -l counts the filtered lines.
  4. Final Answer:

    cat log.txt | grep -i fail | wc -l -> Option A
  5. Quick Check:

    Pipe commands to filter and count lines [OK]
Hint: Pipe cat to grep -i then to wc -l for case-insensitive count [OK]
Common Mistakes:
  • Using > instead of | breaks pipe chain
  • Placing commands in wrong order
  • Omitting -i for case-insensitive search
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