#!/bin/sh - # # To use this filter with less, define LESSOPEN: # export LESSOPEN="|/usr/bin/lesspipe.sh %s" # Helper function to list contents of ISO files (CD images) iso_list() { isoinfo -d -i "$1" isoinfo -d -i "$1" | grep -q ^Rock\.Ridge && iiopts="$iiopts -R" isoinfo -d -i "$1" | grep -q ^Joliet && iiopts="$iiopts -J" echo isoinfo -f $iiopts -i "$1" } lesspipe() { case `echo "$1" | tr '[:upper:]' '[:lower:]'` in *.[1-9n]|*.man|*.[1-9n].bz2|*.man.bz2|*.[1-9].gz|*.[1-9]x.gz|*.man.gz|*.[1-9].xz|*.[1-9]x.xz|*.man.xz) case `echo "$1" | tr '[:upper:]' '[:lower:]'` in *.gz) DECOMPRESSOR="gunzip -c" ;; *.bz2) DECOMPRESSOR="bunzip2 -c" ;; *.xz) DECOMPRESSOR="unxz -c" ;; *) DECOMPRESSOR="cat" ;; esac if $DECOMPRESSOR -- "$1" | file - | grep -q troff; then if echo "$1" | grep -q ^/; then #absolute path man -- "$1" | cat -s else man -- "./$1" | cat -s fi else $DECOMPRESSOR -- "$1" fi ;; *.tar.gz|*.tgz|*.tar.z|*.tar.dz) tar tzvf "$1" ;; *.tar.xz) tar Jtvvf "$1" ;; *.xz) if [ -x "`which xz`" ]; then xz -dc -- "$1" else echo "No xz available"; fi ;; *.tar.bz2|*.tbz2) if [ -x "`which bunzip2`" ]; then bunzip2 -dc "$1" | tar tvvf - else echo "No bunzip2 available"; fi ;; *.bin|*.raw) if [ -x "`which isoinfo`" ]; then file "$1" | grep -q ISO\.9660 && iso_list "$1" else echo "No isoinfo available" echo "Install mkisofs to view ISO images" fi ;; *.bz2) if [ -x "`which bunzip2`" ]; then bunzip2 -dc "$1" else echo "No bunzip2 available"; fi ;; *.cpi|*.cpio) cpio -itv < "$1" ;; *.gz|*.z|*.dz) gzip -dc "$1" ;; *.gif|*.jpeg|*.jpg|*.pcd|*.png|*.tga|*.tiff|*.tif) if [ -x "`which identify`" ]; then identify "$1" else echo "No identify available" echo "Install ImageMagick to browse images" fi ;; *.iso) if [ -x "`which isoinfo`" ]; then iso_list "$1" else echo "No isoinfo available" echo "Install cdrtools to view ISO images" fi ;; *.lha|*.lzh) if [ -x "`which lha`" ]; then lha v "$1" else echo "No lha available"; fi ;; *.pdf) if [ -x "`which pdftotext`" ]; then pdftotext "$1" - else echo "No pdftotext available"; fi ;; *.rar|*.r[0-9][0-9]) if [ -x "`which unrar`" ]; then unrar v "$1" else echo "No rar or unrar available"; fi ;; *.rpm) if [ -x "`which rpm`" ]; then echo "$1:"; rpm -q -i -p "$1" echo echo '*** Contents:' rpm -qlp "$1" else echo "rpm isn't available, no query on rpm package possible" fi ;; *.tar) tar tvvf "$1" ;; *.jar|*.war|*.ear|*.xpi) if [ -x "`which unzip`" ]; then unzip -v "$1"; else echo "No unzip available"; fi ;; *.zip) zipinfo -- "$1" ;; esac } if [ -d "$1" ] ; then /bin/ls -alF -- "$1" else # Allow for user defined filters if [ -x ~/.lessfilter ]; then ~/.lessfilter "$1" exit 0 else lesspipe "$1" 2>/dev/null fi fi