Помогите разобраться с перенаправлением ошибок 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