When you are architecting a complex, multi-process bash pipeline, a standard anonymous pipe (using the | operator) is often mathematically insufficient. Standard pipes require both the data producer and the data consumer to execute simultaneously in a strict, linear hierarchy. To force the Linux kernel to deploy a persistent, decoupled communication vector that exists as a physical file in the directory structure, you must deploy the mkfifo command.
Understanding the FIFO Architecture
The mkfifo (Make First-In, First-Out) command generates a highly specialized kernel object known as a Named Pipe. To the filesystem, it visually resembles a standard file with a size of zero bytes. However, internally, it is a direct mathematical bridge between two totally independent processes. One process can violently dump data payloads into the pipe, while a completely separate process (running in a different terminal window or executed hours later) can extract the payload.
Executing the Pipe Generation
To generate the communication vector, open your terminal and navigate to your target directory (e.g., /tmp/). Type:
mkfifo /tmp/data_bridge
The exact millisecond you press Enter, the mkfifo engine executes the kernel call. If you run ls -l /tmp/data_bridge, you will see the permissions string begins with a p (e.g., prw-r--r--), providing absolute proof that the object is a named pipe, not a standard text file.
Executing Asynchronous Data Transfer
You can now test the decoupled architecture. In your first terminal window, force a command to write its massive output directly into the pipe. The command will instantly “hang” (block execution) until a consumer arrives.
ls -alR / > /tmp/data_bridge
Now, open a completely separate, second terminal window. You will execute a command to consume the data. The data has never touched the physical hard drive; it is suspended in the RAM buffer of the kernel.
grep "root" < /tmp/data_bridge
The exact millisecond you execute the second command, the kernel violently opens the valve. The massive ls payload flows through the pipe directly into the grep engine, perfectly filtering the data without ever writing a single byte to disk.