diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2001-04-02 12:28:48 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2001-04-02 12:28:48 +0000 |
commit | f60c04f9c51cd985ec8959d8134f7ab6a41c2833 (patch) | |
tree | d3ec62498ff118def80d2b86552a46c9f2125dd4 /Functions/Example/zless | |
parent | f0fbd50a98b82ad371879b6a8554ce890ac5484d (diff) | |
download | zsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.tar.gz zsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.tar.xz zsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.zip |
moved from ./Functions/Misc/zless
Diffstat (limited to 'Functions/Example/zless')
-rw-r--r-- | Functions/Example/zless | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Functions/Example/zless b/Functions/Example/zless new file mode 100644 index 000000000..809ce35c7 --- /dev/null +++ b/Functions/Example/zless @@ -0,0 +1,37 @@ +#!/usr/bin/zsh -f +# +# zsh function script to run less on various inputs, decompressing as required. +# Author: Phil Pennock. zsh-hacks@athenaeum.demon.co.uk +# Modified by Bart Schaefer. +# Thanks to zefram@fysh.org for a great deal of help in sorting this out, +# ie wrt syntax for unsetting members of arrays and eval "$(...)" when I +# asked for something better than . =(...) +# +# Use -zforce to pass through a display-formatting command +# zless -zforce 'bzip2 -dc' foo-no-dotbz2 +# zless -zforce 'od -hc' foo-binfile +# +# If you can understand all of this without reference to zshexpn(1) +# and zshparam(1) then you either have a photographic memory or you +# need to get out more. +# + +emulate -R zsh +setopt localoptions + +[[ $# -ge 1 ]] || return +local lessopts +set -A lessopts +integer i=1 loi=1 +while ((i <= $#)) +do + case $argv[i] in + -zforce) argv[i,i+2]=("=($argv[i+1] \"$argv[i+2]\")"); ((++i));; + -*) lessopts[loi++]=\"$argv[i]\"; argv[i]=(); continue;; + *.(gz|Z)) argv[i]="=(zcat \"$argv[i]\")";; + *.bz2) argv[i]="=(bzip2 -dc \"$argv[i]\")";; + *.bz) argv[i]="=(bzip -dc \"$argv[i]\")";; + esac + ((++i)) +done +eval command less $lessopts $* |