1

В списке условных выражений BASH я заметил выражение -t которое проверяет, является ли файловый дескриптор открытым терминалом. я попробовал следующее:

if [[ -t $(tty) ]]; then
  echo open terminal $(tty)
else
  echo not open terminal $(tty)
fi;

и получите мой ответ

not open terminal /dev/pts/35

я попробовал то же самое с консоли и получаю

not open terminal /dev/tty1

на странице man -t описывает аргумент как FD "дескриптор файла", а не другие условные выражения, которые описывают аргумент как FILE

Может ли кто-нибудь предоставить успешный тест BASH для "файлового дескриптора", который "открыт" и "относится к терминалу"?

1 ответ1

1

Файловые дескрипторы представляют собой маленькие целые числа.

В частности, stdin равен fd 0; stdout fd 1; и stderr это fd 2.

Вы увидите то же самое использование "дескриптора файла" в таких строках:

./cmd 2>&1

Что означает «запустить ./cmd , перенаправив fd 2 (stderr) на fd 1 (stdout).

Обычное использование -t - указать, поступает ли ввод с терминала:

[[ -t 0 ]] && echo "Input is coming from a terminal"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .