mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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 $*
 |