A pipe is a command that is utilized by most Linux users for redirecting the output of a command to any file. Unix and Linux operating systems use this command for sending the output of any process, output or program as an input to another process. These operating systems permit the connection between the stdout and stdin commands. The pipe character ‘|’ can be used for the accomplishment of this function.
It is also possible to think of it as a temporary but direct link between two or more processes, commands, or programs. Filters are those command-line programs that perform the additional processing.
This direct connection between processes or commands allows them to execute and pass the data between them simultaneously without facing the trouble of checking the display screen or temporary text files. In the pipeline, the flow of the data is from left to right which declares pipes are unidirectional. Now, let’s check out some practical examples of using pipes in Linux.
Piping the List of Files and Directories:
In the first example, we have illustrated how you can use the pipe command for passing the list of directories and file as an “input” to more commands.
Here, the output of “ls” is considered as input by the “more” command. At a time, the output of the ls command is shown on screen as a result of this instruction. The pipe provides the container capability for receiving the ls command output and passing it to more commands as input.
As main memory performs the pipe implementation, this command does not utilize the disc for creating a link between ls -l standard output to the standard input of more command. The above command is analogous to the following command series in terms of operators of Input/Output redirection.
$ more temp
Check out the “temp” file content manually.
Sort and Printing Unique Values Using Pipes:
Now, we will see a pipe usage example for sorting a file content and printing its unique values. For this purpose, we will combine the “sort” and “uniq” commands with a pipe. But first select any file containing numeric data, in our case we have the “record.txt” file.
Write out the below-given command so that before pipeline processing, you have a clear idea about the file data.
Now, the execution of the below-given command will sort the file data, while displaying the unique values in the terminal.
Pipe Usage with Head and Tail Commands
You can also use “head” and “tail” commands for printing out lines from a file in a specific range.
$ cat samplefile | head -7 | tail -5
The execution process of this command will select the first seven lines of “samplefile” as an input and will pass that to the tail command. The tail command will retrieve the last 5 lines from “samplefile” and will print them out in the terminal. The flow between command execution is all because of pipes.
Matching a Specific Pattern in Matching Files Using Pipes
Pipes can be used for finding files with a specific extension in the extracted list of ls command.
$ ls -l | find ./ -type f -name “*.txt”
Pipe Command in Combination with “grep”, “tee”, and “wc”
This command will select the “Alex” from “record.txt” file, and in the terminal, it will print out the total number of occurrences of the pattern “Alex”. Here, pipe combined “cat”, “grep”, “tee”, and “wc” commands.
$ cat record.txt | grep “Alex” | tee file1.txt | wc -l
$ cat file1.txt
A pipe is a command that is utilized by most Linux users for redirecting the output of a command to any file. The pipe character ‘|’ can be used to accomplish a direct connection between the output of one command as an input of the other one. In this post, we have seen various methods of piping the output of a command to the terminal and files.