Notes † ZSH bible

Pad a number:

tracknumber=1
paddedTracknumber=$(print -f "%02d" $tracknumber)
echo $paddedTracknumber

Outputs:

01

Split string into array:

myvar="foo,bar,baz"
parts=(${(@s/,/myvar})
echo $parts[2]

Outputs:

bar

Join a array to string by comma:

tags=("one" "two" "three")
foo=${(j:,:)tags}
echo $foo

Outputs:

one,two,three

Collect lines into an array:

lines=("${(@f)$(cat stuff.txt)}")
echo $lines[1]

Glob files into an array:

files=($dir/**/*.flac)

Return everything after a certain character:

bla="foo=bar=baz"
echo ${bla#*=}

Outputs:

bar=baz

Loop array in reverse:

for id in "${(@aO)ids}"; do
    echo $id
done

18:59 05.01.2026