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.