Последняя часть вашего вопроса:
Изman bash
:
Redirections using file descriptors greater than 9 should be used with care, as they may conflict with file descriptors the shell uses internally.
Итак, если вы имеете в виду использование как создание нового fd с этим номером, ответ будет отрицательным.
Если вы имеете в виду использовать как :«записать в этот fd»:
$ echo hello >/dev/fd/255"
Или читать оттуда:
$ read a
Да.
Но, вероятно, лучше (независимо от оболочки )использовать /dev/tty
для доступа к tty
.
В качестве альтернативного подключения к tty в случае блокировки fd 1(/dev/stdout
)и fd 0 (/dev/stdin
).
Другие оболочки могут использовать другое число (, например 10 в zsh)
$ zsh
mail% ls -l /proc/self/fd /proc/$$/fd/* &
[1] 3345
mail% lrwx------ 1 isaac isaac 64 Oct 14 09:46 /proc/3250/fd/0 -> /dev/pts/2
lrwx------ 1 isaac isaac 64 Oct 14 09:50 /proc/3250/fd/1 -> /dev/pts/2
lrwx------ 1 isaac isaac 64 Oct 14 09:50 /proc/3250/fd/10 -> /dev/pts/2
lrwx------ 1 isaac isaac 64 Oct 14 09:50 /proc/3250/fd/2 -> /dev/pts/2
/proc/self/fd:
total 0
lrwx------ 1 isaac isaac 64 Oct 14 09:50 0 -> /dev/pts/2
lrwx------ 1 isaac isaac 64 Oct 14 09:50 1 -> /dev/pts/2
lrwx------ 1 isaac isaac 64 Oct 14 09:50 2 -> /dev/pts/2
lr-x------ 1 isaac isaac 64 Oct 14 09:50 3 -> /proc/3345/fd
[1] + done ls -l /proc/self/fd /proc/$$/fd/*
mail%
Fd 255 is used internally as a connection to the tty, so that it doesn't interfere with the use of exec to relocate fds. Bash also allocates high fds when handling a process substitution `<(foo)', for the same reason.
Andreas Schwab
Наконец, поиграв, я обнаружил, что ошибка возникает, когда окно слишком маленькое. Пробовал изменить размер и сделать его шире, решил проблему.
Иногда самые простые вещи являются точным решением.