Один перенаправляет stderr для вывода, а другой — для ввода.
Если вы хотите, чтобы stderr был открыт для чтения и записи, вы можете использовать:
2<>/dev/null
Если вы войдете в систему, все три файловых дескриптора будут открыты для чтения и записи.
Для этого сначала откройте tty, а затем дважды вызовите dup()
.
Команды
{ seq 20 1<&2; } 2>/dev/null
и
{ seq 20 1>&2; } 2>/dev/null
эквивалентны, поскольку окончательное перенаправление создает файловый дескриптор, открытый для записи.
Если вы позвоните:
{ truss -o o seq 20 1<&2; } 2>/dev/null
вы увидите, что вызов записи из seq
выполнен успешно, и, кстати, :вывод из seq
переходит в /dev/null