Помогите разобраться с перенаправлением ошибок bash linux

Если я правильно понял, то >>2 в конце команды find перенаправляет ошибку чтения в файл, вместо того, чтобы выводить ее в консоль

     for dir in $(find $1 -maxdepth $2 -mindepth $2 -type d 2>>/tmp/err.txt);

После всех манипуляций пишется вот что:

IFS=$(printf '\n\t')

for error in $(cat /tmp/err.txt);
do
echo $(basename $0): ${error} >&2
done

С этими строчками требуется помощь в объяснении


Ответы (1 шт):

Автор решения: ipatev_nn

2>>/tmp/err.txt - это перенаправление stderr(поток ошибок) команды find в файл /tmp/err.txt


IFS=$(printf '\n\t') - устанавливается разделитель строк на перенос строки\n или знак табуляции\t
Делается это для того, что бы в цикле for пробел не считался разделителем.
Аналог команды без вызова сторонних программ: IFS=$'\n\t'

#Цикл по ошибкам полученным в ходе выполнения find
for error in $(cat /tmp/err.txt);
do
#Выводится наименование скрипта без пути и суффикса 
#двоеточие, после чего идет строка из файла с перенаправленными ошибками
    echo $(basename $0): ${error} >&2
done
→ Ссылка