: ########################################################################## # Shellscript: icat - "intelligent" cat # Version : 0.5 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 18.05.94 # Category : File Utilities # SCCS-ID : $Id: icat,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Description # # Changes # 02.08.94 stv if the file does not exist, try to output compressed vers. # 15.08.94 stv print file names (0.2) # 19.01.95 stv new extension .cpz (0.3) # 16.03.95 stv do not try to print non-existant file (0.4) # 05.12.96 hs be silent abount decompression method used (0.5) ########################################################################## PN=`basename $0` # program name VER='0.5 (beta)' Extensions=".Z .z .gz .cpz .tgz" # known file extensions Usage () { echo "$PN - cat file, uncompress if necessary, $VER (stv '95) usage: $PN -l $PN [file ...] The first case lists all known extensions, the other case tries to print the given file, uncompressing it if necessary." >&2 exit 1 } Msg () { for line do echo "$PN: $line" >&2 done } Fatal () { Msg "$@"; exit 1; } while [ $# -gt 0 ] do case "$1" in -l) # List known suffixes echo $Extensions exit 0;; --) shift; break;; # Simulate getopt -h) Usage;; *) break;; esac done if [ $# -lt 1 ] then # read from stdin (uncompressed) cat else for i do if [ -r "$i" ] # file does exist then # Try to determine decompressor based on the extension case "$i" in *.Z) zcat "$i";; *.z) gzip -d -c "$i";; *.gz|*.tgz) gzip -d -c "$i";; *.cpz) zcat < "$i";; *) cat "$i";; esac else # try to determine compressed version if [ -r "$i".gz ] then gzip -d -c "$i" elif [ -r "$i".tgz ] then gzip -d -c "$i" elif [ -r "$i".Z ] then zcat "$i" elif [ -r "$i".z ] then gzip -d -c "$i" elif [ -r "$i".cpz ] then zcat < "$i" else Fatal "could not find file: $i" fi Err=$? fi done fi exit ${Err:-0}