1.
https://tldp.org/LDP/abs/html/process-sub.html
2. bash это интерпритатор, вы всегда можете вставить куски выражения, и посмотреть что они выдают, например:
echo <(ls -1 .)
/dev/fd/63
3. Ваш код мягко говоря дурно пахнет, а по сути он вообще кривой и будет сбоить на файлах со спецсимволами или даже пробелами. Можно сделать проще и правильнее:
shopt -s nullglob
for f in my_temp_dir/*; do
echo "$f"
done
nullglob нужен для случаев когда файлов совсем не будет, без него подставится строка со *, и это может вызвать ошибку в вашем коде.