0% found this document useful (0 votes)
17 views

Standard Files in Linux

Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Standard Files in Linux

Copyright
© © All Rights Reserved
Available Formats
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

You might also like