Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Written by Manuel Iglesias. glesialo@gmail.com
- #
- CommandName=${0##*/}
- echoE()
- {
- echo -e $* 1>&2
- return 0
- }
- Usage()
- {
- echoE "'$CommandName' searches for files in \$PATH directories and prints those found."
- echoE "FileNames with Metacharacters should be enclosed in single quotes."
- echoE "Usage: '$CommandName FileName [FileName ...]'."
- echoE
- return 0
- }
- if [ $# -lt 1 ] || [ "$1" == "-h" ] || [ "$1" == "-?" ] || [ "$1" == "--help" ] || [ "$1" == "-help" ]
- then
- Usage
- exit 64
- fi
- #Not found
- ExitCode=70
- #Substitute ':' by blanks and take care of different cases of '.' in PATH.
- for Dir in `echo $PATH | sed 's/^:/.:/
- s/::/:.:/g
- s/:$/:./
- s/:/ /g'`
- do
- ValidDirectory=true
- InfoDirLine="Directory '$Dir"
- if [ -L "$Dir" ] && ! [ -e "$Dir" ]
- then
- InfoDirLine=$InfoDirLine"' Broken link!"
- ValidDirectory=false
- else
- if ! [ -e "$Dir" ]
- then
- InfoDirLine=$InfoDirLine"' Warning: not found!"
- ValidDirectory=false
- else
- if ! [ -d "$Dir" ]
- then
- InfoDirLine=$InfoDirLine"' Warning: not a directory!"
- ValidDirectory=false
- fi
- fi
- fi
- if $ValidDirectory
- then
- # If last character of $Dir is not "/"
- if [ "${Dir:${#Dir}-1:1}" != "/" ]
- then
- InfoDirLine=$InfoDirLine"/"
- fi
- if [ -L "$Dir" ]
- then
- OriginalDir=`readlink -e $Dir`
- Dir=$OriginalDir
- # If last character of $OriginalDir is not "/"
- if [ "${OriginalDir:${#OriginalDir}-1:1}" != "/" ]
- then
- InfoDirLine=$InfoDirLine" -> $OriginalDir/"
- else
- InfoDirLine=$InfoDirLine" -> $OriginalDir"
- fi
- fi
- InfoDirLine=$InfoDirLine"':"
- fi
- if $ValidDirectory
- then
- FoundFiles=""
- cd $Dir
- FoundFiles=`ls -1ABd $@ 2>/dev/null`
- if [ -n "$FoundFiles" ]
- then
- ExitCode=0
- echo $InfoDirLine
- for FileName in $FoundFiles
- do
- InfoLine="\t$FileName"
- if [ -L $FileName ]
- then
- OriginalFile=`readlink -e $FileName`
- if [ -n "$OriginalFile" ]
- then
- if [ -d "$OriginalFile" ]
- then
- InfoLine=$InfoLine"/ -> ${OriginalFile#${Dir}/}/"
- else
- InfoLine=$InfoLine" -> ${OriginalFile#${Dir}/}"
- if ! [ -x "$OriginalFile" ]
- then
- InfoLine=$InfoLine" Not executable!"
- fi
- fi
- else
- InfoLine=$InfoLine" (broken link)"
- fi
- else
- if [ -d "$FileName" ]
- then
- InfoLine=$InfoLine"/"
- else
- if ! [ -x "$FileName" ]
- then
- InfoLine=$InfoLine" Not executable!"
- fi
- fi
- fi
- echo -e "$InfoLine"
- done
- fi
- else
- echo $InfoDirLine
- fi
- done
- exit $ExitCode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement