Вы делаете следующее:
ls <something> | cut <some_cut> | cut <some_other_cut> 2>/dev/null
Это выполнит ls
, первое и второе cut
, и когда ошибка будет сгенерирована на втором cut
, он будет быть отправлено на устройство null
(что означает, что оно будет удалено).
Если вы хотите удалить сообщение об ошибке из любой команды, вам нужно поместить его сразу после соответствующей команды, чтобы вы получили три case:
Case 1: ls <something> | cut <some_cut> | cut <some_other_cut> 2>/dev/null
Case 2: ls <something> 2>/dev/null | cut <some_cut> | cut <some_other_cut>
Case 3: ls <something> 2>/dev/null | cut <some_cut> 2>/dev/null | cut <some_other_cut> 2>/dev/null
Случай 1 - это ситуация, в которой вы сейчас оказались. Варианты 2 и 3 являются возможными решениями: вариант 2 удаляет только сообщения об ошибках из команды ls
, а вариант 3 удаляет сообщения об ошибках из каждой команды.