I think to use it that way you should remove the quoting: print -lr -- ${(@)f} and use it like this: ls "${(f)$recent 3)}" to have the output of recent to be split at newlines and treated as separate arguments would be nice not to have to write all this boilerplate though (I use global aliases for that) hope someone will show a better/simpler way Pier Paolo Grassi Il giorno sab 23 ott 2021 alle ore 22:44 Vin Shelton < acs@alumni.princeton.edu> ha scritto: > Thanks, (I had tried the (q) and the extra assignment after pws suggested > it) but no luck: > > zsh -f > > nuc2% function recent { > function> local dir= > if [[ $# -gt 2 ]]; then > if [[ ! -d "$3" ]]; then > print -u2 "$0: directory \"$3\" does not exist." > return 1 > fi > [[ $3 != '.' ]] && dir="$3"/ > fi > > local f=( ${dir}${~2:-*}(-om[1,${1:-1}]) ) > print -lr -- ${(@q-)f} > } > nuc2% recent 3 > zsh > 'Any Given Sunday.mkv' > TheEnglishPatient.mkv > nuc2% \ls -ld $(recent 3) > ls: cannot access "'Any": No such file or directory > ls: cannot access 'Given': No such file or directory > ls: cannot access "Sunday.mkv'": No such file or directory > -rw-r--r-- 1 acs acs 727146010 Oct 22 15:52 TheEnglishPatient.mkv > drwxr-xr-x 3 acs acs 3488 Oct 23 12:20 zsh > > > What am I doing wrong? Does quoting not work correctly in captured output? > > I appreciate knowing that printf is builtin; thanks. Sorry I missed that. > > - Vin > > > On Sat, Oct 23, 2021 at 3:26 PM Bart Schaefer > wrote: > >> On Sat, Oct 23, 2021 at 12:08 PM Vin Shelton >> wrote: >> > >> > print -l -- ${dir}${~2:-*}(-om[1,${1:-1}]) >> >> You're still missing any of the (q) options on those expansions. >> >> The easiest thing to do here is something like >> >> local recent=( ${dir}${~2:-*}(-om[1,${1:-1}]) ) >> print -lr -- ${(@q-)recent} >> >> It's important to add the quoting after any globbing but before you >> print the result. >> >> > Do I really have to use an external command (like `printf') to make >> this work? >> >> printf is a zsh builtin, for some years now. But as long as you add >> quoting and do not use echo, you should be OK. >> >