Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19
Standard files in linux
Working with Standard Input, Output and Errors in Linux
• 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. • A file descriptor is simply a number that refers to an open file. By default , file descriptor 0 (zero) refers to the standard input & often abbreviated as stdin. File descriptor 1 refers to standard output (stdout) and file descriptor 2 refers to standard error (stderr). These numbers are important when you need to access a particular file , especially when you want to redirect these files to the other locations, File descriptors numbers go up from zero Redirecting Standard Output
• yntax to redirect the output of a command to
a file. • # Command_options_and_arguments > output_file • Example : • linuxtechi@localhost:~$ cat /proc/cpuinfo > command.txt output • 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 52In 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. • 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 Output & 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>&1 • above 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. • Example: 2 • linuxtechi@localhost:~$ ls /usr2222/bin > command.txt 2>&1 linuxtechi@localhost:~$ more command.txt • ls: cannot access /usr2222/bin: No such file or directory
• Note 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 directory • In 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