Redirecting Standard Input (stdin) in Linux
In the realm of Unix-like operating systems such as Linux, input/output
redirection is a powerful feature that enables the manipulation of data streams
coming from or going to a program. One of the critical components of this system
is Standard Input (stdin), a data stream where a program reads its input. While
redirecting Standard Output (stdout) and Standard Error (stderr) is more
commonly demonstrated, stdin also has its set of redirection capabilities that
are often underestimated. This article will shed light on redirecting stdin in
Linux, with a particular focus on using the cat
command.
What is stdin?
Standard Input is one of the three primary data streams used in Linux and other Unix-like operating systems, the other two being Standard Output and Standard Error. Typically, stdin reads data from the terminal keyboard, but through the magic of redirection, it can read data from files or even other programs ( although we won't focus on the latter in this article).
The Basic Syntax for stdin Redirection
The basic operator used to redirect stdin is the <
symbol. When used, it tells
the shell to read input from a file instead of the keyboard. The general syntax
is as follows:
command < file
Redirecting stdin with the cat
Command
The cat
command is often used to concatenate and display the content of files.
By default, it reads from stdin. This makes cat
an ideal candidate for
demonstrating stdin redirection. Here are some examples:
Basic Redirection of stdin
Instead of running cat
and then manually typing input, you can redirect the
input to come from a file:
cat < input.txt
This will display the content of input.txt
on the terminal, just as if you'd
run cat input.txt
. However, this example demonstrates stdin redirection, not
simply reading a file argument.
Multiple Files into One
Suppose you have multiple text files that you want to merge into a single file.
One way to accomplish this is to use cat
with stdin redirection and stdout
redirection in tandem:
cat < file1.txt > merged_file.txt
cat < file2.txt >> merged_file.txt
In this example, the first cat
command reads file1.txt
via stdin and writes
it to merged_file.txt
via stdout. The second cat
command appends the content
of file2.txt
to merged_file.txt
.
Toggle Display Settings
The cat
command also comes with options like -n
or -b
to show line numbers
or non-blank line numbers. You can combine these with stdin redirection:
cat -n < input.txt
This will display the content of input.txt
on the terminal, but with line
numbers added, enhancing readability.
Concatenating Files in a Specific Order
You can use multiple cat
commands and redirect the final output to a file to
concatenate them in a specific order:
(cat < file1.txt; cat < file2.txt; cat < file3.txt) > all_files.txt
Here, each cat
command reads a different file via stdin, and then the
collective output is redirected to all_files.txt
.
Conclusion
Understanding how to redirect stdin in Linux is an important aspect of mastering
the command line interface. The cat
command serves as a versatile tool for
various stdin redirection tasks, from reading and merging files to enhancing
text visibility with line numbers. Once you grasp these fundamental techniques,
you'll find that you have much more flexibility and power at your fingertips,
opening the door to advanced script writing and data manipulation.
What Can You Do Next 🙏😊
If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.