http://www.linuxtechi.com/standard-input-output-error-in-linux
# Command_options_and_arguments > output_file
Example :
# Command_options_and_arguments < input_file
Use the < operator to redirect the input for a command , example is shown below :
# command_options_and_agruments < input_file > output_file.
# command_options_and_agruments 2> output_file.
The 2 in 2> refers to the file descriptor 2, the descriptor number for stderr.
Example:
Example:1
# Command >> file_to_append.
Example:
# > file_name
We can also use an alternate format with a colon :
# : > file_name
Every
process in Linux is provided with three open files( usually called file
descriptor). These files are the standard input, output and error
files. By default :
- Standard Input is the keyboard, abstracted as a file to make it easier to write shell scripts.
- Standard Output is the shell window or the terminal from which the script runs, abstracted as a file to again make writing scripts & program easier
- Standard error is the same as standard output:the shell window or terminal from which the script runs.
Redirecting Standard Output
Syntax to redirect the output of a command to a file.# Command_options_and_arguments > output_file
Example :
linuxtechi@localhost:~$ cat /proc/cpuinfo > command.txtWe can see the data that would have gone to the screen with more command :
linuxtechi@localhost:~$ more command.txt processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz stepping : 5 microcode : 0x616 cpu MHz : 0.000 cache size : 6144 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 5 wp : yes
The > operator tells the shell to
redirect the output of the command to the given file. If the file exists
, the deletes the old contents of the file and replaces it with the
output of the command.
Redirecting a Command’s Input :
Syntax to redirect the input of a command to come from a file.# Command_options_and_arguments < input_file
Use the < operator to redirect the input for a command , example is shown below :
linuxtechi@localhost:~$ wc -l < command.txt 52
In this example , the input to the ‘wc‘
command comes from the file named command.txt. The shell sends the
contents of the file command.txt as a standard input for the wc command.
Note : We can also combine both redirections with following syntax :# command_options_and_agruments < input_file > output_file.
Redirecting Standard Error :
In addition to redirecting the standard
input and output for a script or a command, we can also redirect
standard error. Even though standard error by defaults goes to the same
place as the standard output – the shell window or terminal. There are
good reasons why stdout and stderr are treated separately. The main
reason is that we can redirect the output of a command or commands to a
file but you have no way of knowing whether an error occurred.
Separating stderr from stdout allows the error message to appear on your
screen while output still goes to a file.
Syntax to redirect stderr from a command to a file.# command_options_and_agruments 2> output_file.
The 2 in 2> refers to the file descriptor 2, the descriptor number for stderr.
Example:
linuxtechi@localhost:~$ lsash /usr/bin 2> commands-error.txt linuxtechi@localhost:~$ cat commands-error.txt No command 'lsash' found, did you mean: Command 'sash' from package 'sash' (universe) lsash: command not found
Redirecting both Standard Ouput & Standard Error.
Use 2>&1 Syntax to redirect standard error to the same location as standard output .Example:1
linuxtechi@localhost:~$ ls /usr/bin > command.txt 2>&1Above Command has three parts.
- ls /usr/bin is the command run
- > command.txt redirects the output of the ls command
- 2>&1 sends the output of the file descriptor 2, stderr , to the same location as the file descriptor 1, stdout.
linuxtechi@localhost:~$ ls /usr2222/bin > command.txt 2>&1 linuxtechi@localhost:~$ more command.txt ls: cannot access /usr2222/bin: No such file or directoryNote that above example assumes that your system doesn’t have directory names “/usr2222/bin”
Redirecting Both stderr & stdout at Once
linuxtechi@localhost:~$ ls /usr2222/bin &> command.txt linuxtechi@localhost:~$ more command.txt ls: cannot access /usr2222/bin: No such file or directoryIn the above command ls is the command , /usr2222/bin is the argument to the ‘ls‘ command and ‘&> command.txt‘ redirect both stdout and stderr to a file named command.txt.
Appending To Files
Use the ‘>>’ operator to redirect the output of a command , but append to the file , if it exists. The syntax is given below :# Command >> file_to_append.
Example:
linuxtechi@localhost:~$ uptime >> sysload.txt linuxtechi@localhost:~$ uptime >> sysload.txt linuxtechi@localhost:~$ uptime >> sysload.txt linuxtechi@localhost:~$ more sysload.txt 11:49:17 up 1:22, 3 users, load average: 0.28, 0.12, 0.11 11:49:28 up 1:22, 3 users, load average: 0.40, 0.15, 0.12 11:49:36 up 1:23, 3 users, load average: 0.33, 0.14, 0.12
Truncating Files :
We can use a shorthand syntax for truncating files by omitting the command before > operator . The Syntax is given below :# > file_name
We can also use an alternate format with a colon :
# : > file_name
Both of these command-less command will
create the file if it does not exist and truncate the file to zero bytes
if the file does exist.
linuxtechi@localhost:~$ ls /usr/bin > command.txt linuxtechi@localhost:~$ ls -l command.txt -rw-rw-r-- 1 linuxtechi linuxtechi 19713 Dec 2 12:18 command.txt linuxtechi@localhost:~$ > command.txt linuxtechi@localhost:~$ ls -l command.txt -rw-rw-r-- 1 linuxtechi linuxtechi 0 Dec 2 12:18 command.txt
Sending Ouput to Nowhere Fast
There are some scenarios where you not only want to redirect the output of a command , you want to throw the output away. You can do this by redirecting a command’s output to the null file “/dev/null” The null file consumes all output sent to it , as if /dev/null is a black hole star.linuxtechi@localhost:~$ ls /usr/bin > /dev/nullNote : The file /dev/null is often called a bit bucket.
No comments:
Post a Comment