#!/bin/sh # # lessfile/lesspipe # $Id: lessopen,v 1.4 1998/05/12 09:37:46 torin Exp $ # Plus POSIX sh changes by Y.Dirson # # Less filter for viewing non text files. # # Written by: Behan Webster <behanw@pobox.com> # Many Modifications by Darren Stalder # Further Modifications by Thomas Schoepf <schoepf@debian.org> # # combined lessfile and lesspipe to avoid duplication of decode stage # shell is sure icky. I'm real tempted to rewrite the whole thing in Perl # # Unfortunately, this means that I have filename dependencies sprinkled # throughout the code. If you don't want lessfile to be called that, # you'll need to change the LESSFILE envar below. # # Usage: eval `lessfile` or eval `lesspipe` # # less passes in: # $1 filename to be viewed with less (used by LESSOPEN) # and possibly (if used by lessfile) # $2 filename that was created during LESSOPEN TMPDIR=${TMPDIR:-/tmp} BASENAME=`basename $0` LESSFILE=lessfile # 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" } if [ $# -eq 1 ] ; then # we were called as LESSOPEN # if the file doesn't exist, we don't do anything if [ ! -r "$1" ]; then exit 0 fi # generate filename for possible use by lesspipe umask 077 if [ $BASENAME = $LESSFILE ]; then TMPFILE=`tempfile -d $TMPDIR -p lessf` if [ -z "$TMPFILE" ]; then echo >&2 "Could not find essential program 'tempfile'. Exiting" exit 1 fi fi ( # possibly redirect stdout to a file for lessfile if [ $BASENAME = $LESSFILE ]; then exec > $TMPFILE; fi # Allow for user defined filters #if [ -x ~/.lessfilter -a -O ~/.lessfilter ]; then if [ -x ~/.lessfilter ]; then ~/.lessfilter "$1" if [ $? -eq 0 ]; then if [ $BASENAME = $LESSFILE ]; then if [ -s $TMPFILE ]; then echo $TMPFILE else rm -f $TMPFILE fi fi exit 0 fi fi # Decode file for less case `echo "$1" | tr '[:upper:]' '[:lower:]'` in *.a) if [ -x "`which ar`" ]; then ar tv "$1" else echo "No ar available"; fi ;; *.arj) if [ -x "`which unarj`" ]; then unarj l "$1" else echo "No unarj available"; fi ;; *.tar.bz2) if [ -x "`which bunzip2`" ]; then bunzip2 -dc "$1" | tar tvvf - else echo "No bunzip2 available"; fi ;; *.bz) if [ -x "`which bunzip`" ]; then bunzip -c "$1" else echo "No bunzip available"; fi ;; *.bz2) if [ -x "`which bunzip2`" ]; then bunzip2 -dc "$1" else echo "No bunzip2 available"; fi ;; *.deb|*.udeb|*.ddeb|*.ipk) echo "$1:"; dpkg --info "$1" echo echo '*** Contents:'; dpkg-deb --contents "$1" ;; *.doc) if [ -x "`which catdoc`" ]; then catdoc "$1" else # no catdoc, read normally if file is text. if ( file "$1" | grep ASCII 2>/dev/null >/dev/null); then cat "$1" else echo "No catdoc available"; fi fi ;; *.egg) if [ -x "`which unzip`" ]; then unzip -p "$1" EGG-INFO/PKG-INFO | \ sed '/^Description:/,/^\S/{/^Description:/d; /^\S/b; d}' echo unzip -v "$1" else echo "No unzip available" fi ;; *.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 mkisofs to view ISO images" 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 ;; *.lha|*.lzh) if [ -x "`which lha`" ]; then lha v "$1" else echo "No lha available"; fi ;; *.tar.lz|*.tlz) if [ -x "`which lzip`" ]; then lzip -dc "$1" | tar tvvf - elif [ -x "`which lunzip`" ]; then lunzip -dc "$1" | tar tvvf - else echo "No lzip or lunzip available"; fi ;; *.lz) if [ -x "`which lzip`" ]; then lzip -dc "$1" elif [ -x "`which lunzip`" ]; then lunzip -dc "$1" else echo "No lzip or lunzip available"; fi ;; *.tar.lzma) if [ -x "`which lzma`" ]; then lzma -dc "$1" | tar tfvv - else echo "No lzma available" fi ;; *.lzma) if [ -x "`which lzma`" ]; then lzma -dc "$1" else echo "No lzma available" fi ;; *.pdf) if [ -x "`which pdftotext`" ]; then pdftotext -layout "$1" - else echo "No pdftotext available"; fi ;; *.rar|*.r[0-9][0-9]) if [ -x "`which rar`" ]; then rar v "$1" elif [ -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 -q -l -p "$1" else echo "rpm isn't available, no query on rpm package possible"; fi ;; *.snap) if [ -x "`which snap`" ]; then snap info "$1"; fi if [ -x "`which unsquashfs`" ]; then echo echo '*** Contents:'; unsquashfs -ll -d '' "$1" else echo "No unsquashfs available"; fi ;; *.tar.gz|*.tgz|*.tar.z|*.tar.dz) tar tzvf "$1" --force-local ;; *.tar.xz|*.txz) if [ -x "`which xz`" ]; then xz -dc "$1" | tar tfvv - else echo "No xz available" fi ;; *.whl) if [ -x "`which unzip`" ]; then unzip -p "$1" '*.dist-info/METADATA' | sed '/^$/q' unzip -v "$1" else echo "No unzip available" fi ;; *.xz) if [ -x "`which xz`" ]; then xz -dc "$1" else echo "No xz available" fi ;; # Note that this is out of alpha order so that we don't catch # the gzipped tar files. *.gz|*.z|*.dz) gzip -dc "$1" ;; *.tar) tar tvf "$1" --force-local ;; *.jar|*.war|*.ear|*.xpi|*.zip) if [ -x "`which unzip`" ]; then unzip -v "$1"; elif [ -x "`which miniunzip`" ]; then miniunzip -l "$1"; elif [ -x "`which miniunz`" ]; then miniunz -l "$1"; else echo "No unzip, miniunzip or miniunz available"; fi ;; *.7z) if [ -x "`which 7za`" ]; then 7za l "$1"; elif [ -x "`which 7zr`" ]; then 7zr l "$1"; else echo "No 7za or 7zr available"; fi ;; *.zoo) if [ -x "`which zoo`" ]; then zoo v "$1"; elif [ -x "`which unzoo`" ]; then unzoo -l "$1"; else echo "No unzoo or zoo available"; fi ;; esac ) 2>/dev/null if [ $BASENAME = $LESSFILE ]; then if [ -s $TMPFILE ]; then echo $TMPFILE else rm -f $TMPFILE fi fi elif [ $# -eq 2 ] ; then # # we were called as LESSCLOSE # delete the file created if we were lessfile # if [ $BASENAME = $LESSFILE ]; then if [ -n "$BASH" ]; then if [ ! -O "$2" ]; then echo "Error in deleting $2" > /dev/tty fi fi if [ -f "$2" ]; then rm -f "$2" else echo "Error in deleting $2" > /dev/tty fi fi elif [ $# -eq 0 ] ; then # # must setup shell to use LESSOPEN/LESSCLOSE # # I have no idea how some of the more esoteric shells (es, rc) do # things. If they don't do things in a Bourne manner, send me a patch # and I'll incorporate it. # # first determine the full path of lessfile/lesspipe # if you can determine a better way to do this, send me a patch, I've # not shell-scripted for many a year. FULLPATH=`cd \`dirname $0\`;pwd`/$BASENAME case "$SHELL" in *csh) if [ $BASENAME = $LESSFILE ]; then echo "setenv LESSOPEN \"$FULLPATH %s\";" echo "setenv LESSCLOSE \"$FULLPATH %s %s\";" else echo "setenv LESSOPEN \"| $FULLPATH %s\";" echo "setenv LESSCLOSE \"$FULLPATH %s %s\";" fi ;; *) if [ $BASENAME = $LESSFILE ]; then echo "export LESSOPEN=\"$FULLPATH %s\";" echo "export LESSCLOSE=\"$FULLPATH %s %s\";" else echo "export LESSOPEN=\"| $FULLPATH %s\";" echo "export LESSCLOSE=\"$FULLPATH %s %s\";" fi ;; esac #echo "# If you tried to view a file with a name that starts with '#', you" #echo "# might see this message instead of the file's contents." #echo "# To view the contents, try to put './' ahead of the filename when" #echo "# calling less." else echo "Usage: eval \`$BASENAME\`" exit fi
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
bash | File | 1.06 MB | 0755 |
|
btrfs | File | 699.67 KB | 0755 |
|
btrfs-debug-tree | File | 367.14 KB | 0755 |
|
btrfs-find-root | File | 363.14 KB | 0755 |
|
btrfs-image | File | 387.14 KB | 0755 |
|
btrfs-map-logical | File | 367.14 KB | 0755 |
|
btrfs-select-super | File | 363.14 KB | 0755 |
|
btrfs-zero-log | File | 363.14 KB | 0755 |
|
btrfsck | File | 699.67 KB | 0755 |
|
btrfstune | File | 367.14 KB | 0755 |
|
bunzip2 | File | 34.07 KB | 0755 |
|
busybox | File | 1.97 MB | 0755 |
|
bzcat | File | 34.07 KB | 0755 |
|
bzcmp | File | 2.09 KB | 0755 |
|
bzdiff | File | 2.09 KB | 0755 |
|
bzegrep | File | 3.56 KB | 0755 |
|
bzexe | File | 4.76 KB | 0755 |
|
bzfgrep | File | 3.56 KB | 0755 |
|
bzgrep | File | 3.56 KB | 0755 |
|
bzip2 | File | 34.07 KB | 0755 |
|
bzip2recover | File | 13.99 KB | 0755 |
|
bzless | File | 1.27 KB | 0755 |
|
bzmore | File | 1.27 KB | 0755 |
|
cat | File | 34.24 KB | 0755 |
|
chacl | File | 13.99 KB | 0755 |
|
chgrp | File | 62.18 KB | 0755 |
|
chmod | File | 58.21 KB | 0755 |
|
chown | File | 66.18 KB | 0755 |
|
chvt | File | 10.07 KB | 0755 |
|
cp | File | 138.21 KB | 0755 |
|
cpio | File | 153.54 KB | 0755 |
|
dash | File | 118.59 KB | 0755 |
|
date | File | 98.21 KB | 0755 |
|
dd | File | 74.22 KB | 0755 |
|
df | File | 82.79 KB | 0755 |
|
dir | File | 130.66 KB | 0755 |
|
dmesg | File | 70.31 KB | 0755 |
|
dnsdomainname | File | 18.07 KB | 0755 |
|
domainname | File | 18.07 KB | 0755 |
|
dumpkeys | File | 166.52 KB | 0755 |
|
echo | File | 34.18 KB | 0755 |
|
ed | File | 50.3 KB | 0755 |
|
efibootdump | File | 17.99 KB | 0755 |
|
efibootmgr | File | 39.12 KB | 0755 |
|
egrep | File | 28 B | 0755 |
|
false | File | 30.18 KB | 0755 |
|
fgconsole | File | 10.07 KB | 0755 |
|
fgrep | File | 28 B | 0755 |
|
findmnt | File | 63.27 KB | 0755 |
|
fsck.btrfs | File | 1.16 KB | 0755 |
|
fuser | File | 35.09 KB | 0755 |
|
fusermount | File | 30.08 KB | 4755 |
|
getfacl | File | 22.62 KB | 0755 |
|
grep | File | 214.31 KB | 0755 |
|
gunzip | File | 2.25 KB | 0755 |
|
gzexe | File | 5.86 KB | 0755 |
|
gzip | File | 99.18 KB | 0755 |
|
hostname | File | 18.07 KB | 0755 |
|
ip | File | 545.12 KB | 0755 |
|
journalctl | File | 62.09 KB | 0755 |
|
kbd_mode | File | 10.07 KB | 0755 |
|
kill | File | 26.08 KB | 0755 |
|
kmod | File | 146.18 KB | 0755 |
|
less | File | 166.76 KB | 0755 |
|
lessecho | File | 10.02 KB | 0755 |
|
lessfile | File | 8.36 KB | 0755 |
|
lesskey | File | 19.39 KB | 0755 |
|
lesspipe | File | 8.36 KB | 0755 |
|
ln | File | 66.22 KB | 0755 |
|
loadkeys | File | 206.57 KB | 0755 |
|
login | File | 51.43 KB | 0755 |
|
loginctl | File | 50.08 KB | 0755 |
|
lowntfs-3g | File | 106.67 KB | 0755 |
|
ls | File | 130.66 KB | 0755 |
|
lsblk | File | 82.08 KB | 0755 |
|
lsmod | File | 146.18 KB | 0755 |
|
mkdir | File | 78.18 KB | 0755 |
|
mkfs.btrfs | File | 387.17 KB | 0755 |
|
mknod | File | 66.18 KB | 0755 |
|
mktemp | File | 42.18 KB | 0755 |
|
more | File | 38.04 KB | 0755 |
|
mount | File | 42.08 KB | 4755 |
|
mountpoint | File | 14.07 KB | 0755 |
|
mt | File | 78.63 KB | 0755 |
|
mt-gnu | File | 78.63 KB | 0755 |
|
mv | File | 134.22 KB | 0755 |
|
nano | File | 240.11 KB | 0755 |
|
nc | File | 34.48 KB | 0755 |
|
nc.openbsd | File | 34.48 KB | 0755 |
|
netcat | File | 34.48 KB | 0755 |
|
netstat | File | 150.58 KB | 0755 |
|
networkctl | File | 42.07 KB | 0755 |
|
nisdomainname | File | 18.07 KB | 0755 |
|
ntfs-3g | File | 142.7 KB | 0755 |
|
ntfs-3g.probe | File | 10.07 KB | 0755 |
|
ntfscat | File | 26.1 KB | 0755 |
|
ntfscluster | File | 34.1 KB | 0755 |
|
ntfscmp | File | 34.1 KB | 0755 |
|
ntfsfallocate | File | 34.11 KB | 0755 |
|
ntfsfix | File | 42.11 KB | 0755 |
|
ntfsinfo | File | 54.12 KB | 0755 |
|
ntfsls | File | 31.18 KB | 0755 |
|
ntfsmove | File | 30.1 KB | 0755 |
|
ntfsrecover | File | 114.1 KB | 0755 |
|
ntfssecaudit | File | 86.59 KB | 0755 |
|
ntfstruncate | File | 38.03 KB | 0755 |
|
ntfsusermap | File | 30.02 KB | 0755 |
|
ntfswipe | File | 46.63 KB | 0755 |
|
open | File | 18.43 KB | 0755 |
|
openvt | File | 18.43 KB | 0755 |
|
pidof | File | 22.08 KB | 0755 |
|
ping | File | 62.91 KB | 4755 |
|
ping4 | File | 62.91 KB | 4755 |
|
ping6 | File | 62.91 KB | 4755 |
|
plymouth | File | 37.99 KB | 0755 |
|
ps | File | 130.3 KB | 0755 |
|
pwd | File | 34.18 KB | 0755 |
|
rbash | File | 1.06 MB | 0755 |
|
readlink | File | 42.18 KB | 0755 |
|
red | File | 89 B | 0755 |
|
rm | File | 62.21 KB | 0755 |
|
rmdir | File | 42.18 KB | 0755 |
|
rnano | File | 240.11 KB | 0755 |
|
run-parts | File | 18.32 KB | 0755 |
|
sed | File | 106.45 KB | 0755 |
|
setfacl | File | 34.68 KB | 0755 |
|
setfont | File | 42.13 KB | 0755 |
|
setupcon | File | 38.19 KB | 0755 |
|
sh | File | 118.59 KB | 0755 |
|
sh.distrib | File | 118.59 KB | 0755 |
|
sleep | File | 34.18 KB | 0755 |
|
ss | File | 136.63 KB | 0755 |
|
static-sh | File | 1.97 MB | 0755 |
|
stty | File | 74.21 KB | 0755 |
|
su | File | 43.62 KB | 4755 |
|
sync | File | 34.18 KB | 0755 |
|
systemctl | File | 178.08 KB | 0755 |
|
systemd | File | 1.54 MB | 0755 |
|
systemd-ask-password | File | 10.08 KB | 0755 |
|
systemd-escape | File | 14.06 KB | 0755 |
|
systemd-hwdb | File | 82.35 KB | 0755 |
|
systemd-inhibit | File | 14.08 KB | 0755 |
|
systemd-machine-id-setup | File | 18.06 KB | 0755 |
|
systemd-notify | File | 14.07 KB | 0755 |
|
systemd-sysusers | File | 42.07 KB | 0755 |
|
systemd-tmpfiles | File | 70.07 KB | 0755 |
|
systemd-tty-ask-password-agent | File | 26.07 KB | 0755 |
|
tar | File | 413.39 KB | 0755 |
|
tempfile | File | 9.87 KB | 0755 |
|
touch | File | 86.21 KB | 0755 |
|
true | File | 30.18 KB | 0755 |
|
udevadm | File | 574.4 KB | 0755 |
|
ulockmgr_server | File | 13.99 KB | 0755 |
|
umount | File | 26.07 KB | 4755 |
|
uname | File | 34.21 KB | 0755 |
|
uncompress | File | 2.25 KB | 0755 |
|
unicode_start | File | 2.7 KB | 0755 |
|
vdir | File | 130.66 KB | 0755 |
|
wdctl | File | 30.08 KB | 0755 |
|
which | File | 946 B | 0755 |
|
whiptail | File | 26.01 KB | 0755 |
|
ypdomainname | File | 18.07 KB | 0755 |
|
zcat | File | 1.89 KB | 0755 |
|
zcmp | File | 1.74 KB | 0755 |
|
zdiff | File | 5.65 KB | 0755 |
|
zegrep | File | 140 B | 0755 |
|
zfgrep | File | 140 B | 0755 |
|
zforce | File | 2.08 KB | 0755 |
|
zgrep | File | 6.3 KB | 0755 |
|
zless | File | 1.99 KB | 0755 |
|
zmore | File | 1.87 KB | 0755 |
|
znew | File | 4.95 KB | 0755 |
|