dos2unix Script: How to convert DOS text into Unix text ?
Today we will see a useful script to convert DOS text into Unix text.
The script will take backup of original file before making changes.
And then makes the changes in the original text.
I. dos2unix Script
#!/bin/ksh
fname=$1
echo ${fname}
if [[ ${fname} == "" ]]
then
echo "Usage: dos2unix "
exit
fi
if [[ ! -f ${fname} ]]
then
echo "${fname} does not exist"
exit
fi
cp ${fname} ${fname}.orig
if [[ $? != 0 ]]
then
echo "unable to take backup copy of file to be converted"
exit
fi
tr -d '\r' < ${fname} > ${fname}.conv
if [[ $? != 0 ]]
then
echo "unable to convert file"
exit
fi
mv ${fname}.conv ${fname}
if [[ $? != 0 ]]
then
echo "unable to overwrite original file with converted file. Converted file name is ${fname}.conv "
exit
fi
II. Understanding the Script
Lets understand the parts of the script what actually we did above.
a. Show help
If the command ran without any options, it will show:
Usage: dos2unix
fname=$1
echo ${fname}
if [[ ${fname} == "" ]]
then
echo "Usage: dos2unix "
exit
fi
b. Check if filename exists or not.
if [[ ! -f ${fname} ]]
then
echo "${fname} does not exist"
exit
fi
c. Copy the file in order to take backup.
If copy encountered an error, then update the user.
cp ${fname} ${fname}.orig
if [[ $? != 0 ]]
then
echo "unable to take backup copy of file to be converted"
exit
fi
d. Remove the extra characters and create a new file with .conv extension
tr -d '\r' < ${fname} > ${fname}.conv
e. In case the last command failed i.e. not able to run tr command, throw an error on the screen.
if [[ $? != 0 ]] then echo "unable to convert file" exit fi
f. Copy the converted file in place of original file.
In case of error while copying, throw an error on screen.
mv ${fname}.conv ${fname}
if [[ $? != 0 ]]
then
echo "unable to overwrite original file with converted file. Converted file name is ${fname}.conv "
exit
fi
