Lecture 13
File Redirection and Encryption
What is File Redirection?
File Redirection types
o StdOUT
o StdIN
o StdERR
File overwrite and append using CAT
File Encryption
Shutdown and Restart System
Copyright © Prof. TANVEER AHMAD
What is File Redirection?
Redirection is a feature in Linux such that when executing a command, you can
change the standard input/output devices. The standard input (stdin) device is the
keyboard and standard output (stdout) device is the screen.
File Redirection types
There are three basic types of file redirection as follows,
StdOUT (Standard Output)
# ls –l > file2 // output of the command ls will be saved to file2
# ls –l >> file2 // output of the command ls will be updated to file2
Note: > is used to overwrite the existing content in the file
Note: >> is used to append the new data with existing content in the file
StdIN (Standard Input)
# echo hello // hello will display on screen after getting input
# cat < file3 // it will take data from file3 and display
# cat << file3 // it will append data
StdERR (Standard Error)
# ls –l folder99 2> file4 // error output will be saved to file4
# ls –l folder93 2 >> file4 // error output will append to file4
File overwrites and appends using CAT
# cat > file2 // it will open file2 to write data and overwrite existing
data
This is my 1st line of data in this file2
# cat >> file2 // it will open file2 to write data and append existing
data
This is my 2nd line of data in this file2
This is my 3rd line of data in this file
File Encryption
Copyright © Prof. TANVEER AHMAD
# vim -X file6 // it will open file6 and ask to set encryption
password
# vim file6 // verify the password is working or not
: set key = newpassword // to set or change new password
: set key = // to remove password
Shutdown and Restart System using Commands
# shutdown now // it will shut down computer
# init 0 // shutdown computer
# init 1 // restart computer
Output Redirection: The '>' symbol is used for output (STDOUT) redirection.
Example:
ls -al > listings
Here the output of command ls -al is re-directed to file "listings" instead of your
screen.
Note: Use the correct file name while redirecting command output to a file. If there
is an existing file with the same name, the redirected command will delete the
contents of that file and then it may be overwritten."
If you do not want a file to be overwritten but want to add more content to an
existing file, then you should use '>>' operator.
You can redirect standard output, to not just files, but also devices!
Copyright © Prof. TANVEER AHMAD
$ cat music.mp3 > /dev/audio
The cat command reads the file music.mp3 and sends the output to /dev/audio
which is the audio device. If the sound configurations in your PC are correct, this
command will play the file music.mp3
Input redirection: The '<' symbol is used for input(STDIN) redirection
Example: The mail program in Linux can help you send emails from the Terminal.
You can type the contents of the email using the standard device keyboard. But if
you want to attach a File to email you can use the input re-direction operator in the
following format.
Mail -s "Subject" to-address < Filename
This would attach the file with the email, and it would be sent to the recipient.
The above examples were simple. Let's look at some advance re-direction
techniques which make use of File Descriptors.
File Descriptors (FD)
In Linux/Unix, everything is a file. Regular file, Directories, and even Devices are
files. Every File has an associated number called File Descriptor (FD).
Your screen also has a File Descriptor. When a program is executed the output is
sent to File Descriptor of the screen, and you see program output on your monitor.
If the output is sent to File Descriptor of the printer, the program output would
have been printed.
Error Redirection
Whenever you execute a program/command at the terminal, 3 files are always
open, viz., standard input, standard output, standard error.
Copyright © Prof. TANVEER AHMAD
These files are always present whenever a program is run. As explained before a
file descriptor, is associated with each of these files.
File File Descriptor
Standard Input STDIN 0
Standard Output STDOUT 1
Standard Error STDERR 2
By default, error stream is displayed on the screen. Error redirection is routing the
errors to a file other than the screen.
Why Error Redirection?
Error re-direction is one of the very popular features of Unix/Linux.
Frequent UNIX users will reckon that many commands give you massive amounts
of errors.
For instance, while searching for files, one typically gets permission denied
errors. These errors usually do not help the person searching for a particular
file.
While executing shell scripts, you often do NOT want error messages
cluttering up the normal program output.
The solution is to re-direct the error messages to a file.
Example 1
$ myprogram 2>errorsfile
Above we are executing a program names myprogram.
The file descriptor for standard error is 2.
Copyright © Prof. TANVEER AHMAD
Using "2>" we re-direct the error output to a file named "errorfile"
Thus, program output is not cluttered with errors.
Example 2
Here is another example which uses find statement -
find . -name 'my*' 2>error.log
Using the "find" command, we are searching the "." current directory for a file with
"name" starting with "my"
Example 3 Let's see a more complex example,
Server Administrators frequently, list directories and store both error and standard
output into a file, which can be processed later. Here is the command.
ls Documents ABC> dirlist 2>&1
Here,
which writes the output from one file to the input of another file. 2>&1
means that STDERR redirects to the target of STDOUT (which is the file
dirlist)
We are redirecting error output to standard output which in turn is being re-
directed to file dirlist. Hence, both the output is written to file dirlist
Copyright © Prof. TANVEER AHMAD
Summary
Each file in Linux has a corresponding File Descriptor associated with it
The keyboard is the standard input device while your screen is the standard
output device
">" is the output redirection operator. ">>" appends output to an existing file
"<" is the input redirection operator
">&"re-directs output of one file to another.
You can re-direct error using its corresponding File Descriptor 2.
Copyright © Prof. TANVEER AHMAD