#!/bin/zsh exec >&2 fns=() toprint=() typeset -A seen ctr=0 path-extractor | while read fn ; do [[ $seen[$fn] -eq 1 ]] && continue seen+=($fn 1) fns+=($fn) toprint+=(`printf "%X:%s" $ctr "${fn}"`) ctr=$(( $ctr + 1 )) done [[ $ctr -le 20 ]] && print -C 1 $toprint || print -c $toprint print -n "> " read choice < /dev/tty if [[ "$choice" = "*" ]]; then buf=$fns else buf=() for c in ${=choice} ; do fn=$fns[$(( 1 + 16#$c ))] buf+=($fn) done fi print $buf print -n $buf | xclip -in -selection clipboard