The term pipe is derived from ‘pipeline’. In computer science, a pipe is a stream of data that runs between two processes that are either closely related or also have no common origin. This means that the result output by one program serves as input to another program. Among other things, this allows you to split larger problems into smaller sub-problems for a better overview.
In Linux, there are two different types of pipes, the unnamed pipes and the named pipes. While unnamed or anonymous pipes are used between processes that are closely related, named pipes or FIFO (they are based on the ‘First In - First Out’ principle), allow communication between two unrelated processes that may also be on different machines within the same network. Unlike unnamed pipes, named pipes also enable bidirectional communication and not just one-way communication (one process writes while the other only reads).