In Linux shell scripting, input-output redirection is the process of redirecting standard input, output, and error streams of a command to or from a file or another command. This feature is essential when dealing with large volumes of data or when you want to automate a series of commands.
Here are the basic syntax and examples for input-output redirection in Linux shell scripts:
Redirecting standard output (stdout)
Syntax:
command > filename
Example:
echo "Hello, World!" > output.txt
This command redirects the output of the echo command to a file named output.txt.
Appending to a file
Syntax:
command >> filename
Example:
echo "Hello, again!" >> output.txt
This command appends the output of the echo command to the end of the output.txt file.
Redirecting standard input (stdin)
Syntax:
command < filename
Example:
sort < input.txt
This command reads the input from a file named input.txt and sorts it alphabetically.
Redirecting standard error (stderr)
Syntax:
command 2> filename
Example:
grep "hello" *.txt 2> error.log
This command redirects the error output of the grep command to a file named error.log.
Redirecting both standard output and error
Syntax:
command > filename 2>&1
Example:
ls -lR > dirlist.txt 2>&1
This command redirects both standard output and error to a file named dirlist.txt.
These are some of the basic input-output redirection techniques used in Linux shell scripts. There are many other advanced techniques like piping, process substitution, and file descriptors that can be used for more complex scenarios.