24 March 2020
Shell Script - File Details
Script : Displaying a File with Additional Information Script Name: showfile.sh Script Function:Script as an alternative to cat displaying a files additional
Script : Displaying a File with Additional Information
Script Name: showfile.sh
**Script Function:**Script as an alternative to cat displaying a files additional information.
Eg: ./showfile.sh test.txt
-––––––––––––––––––––––––––––––––
File test.txt (3 lines, 48 characters, owned by root):
-––––––––––––––––––––––––––––––––
khdkhwqkd
wqldkjwqldb
wndlwqndlbnwd’;kbn’;md;nl
-––––––––––––––––––––––––––––––––
Script Usage: ./showfile.sh < filename >
Code:
#!/bin/bash
# showfile–Shows the contents of a file, including additional useful info
width=72
fmt(){
while getopts “hw:” opt; do
case $opt in
h ) hyph=1 ;;
w ) width=“$OPTARG” ;;
esac
done
shift $(($OPTIND - 1))
nroff << EOF
.ll ${width:-72}
.na
.hy ${hyph:-0}
.pl 1
$(cat “$@”)
EOF
exit
}
input=$1
lines=“$(wc -l < $input | sed ‘s/ //g’)”
chars=“$(wc -c < $input | sed ‘s/ //g’)”
owner=“$(ls -ld $input | awk ‘{print $3}’)”
echo “—————————————————————–”
echo “File $input ($lines lines, $chars characters, owned by $owner):”
echo “—————————————————————–”
while read line
do
if [ ${#line} -gt $width ] ; then
echo “$line” | fmt | sed -e ‘1s/^/ /’ -e ‘2,$s/^/+ /’
else
echo “ $line”
fi
done < $input
echo “—————————————————————–”
exit 0