2 votes

test bash pour "open terminal" (ouvrir le terminal)

J'ai remarqué dans la liste des EXPRESSIONS CONDITIONNELLES de BASH un -t expression qui teste si un descripteur de fichier est un terminal ouvert. J'ai essayé ce qui suit :

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

et obtenir ma réponse

not open terminal /dev/pts/35

J'ai essayé la même chose depuis une console et j'obtiens

not open terminal /dev/tty1

dans la page de manuel -t décrit son argument comme suit FD un "descripteur de fichier" plutôt que d'autres expressions conditionnelles qui décrivent l'argument en tant que FILE

Quelqu'un peut-il fournir un test BASH réussi pour un "descripteur de fichier" qui est "ouvert" et "fait référence au terminal" ?

2voto

rici Points 3733

Les descripteurs de fichiers sont de petits entiers.

En particulier, stdin est fd 0 ; stdout est fd 1 ; et stderr est fd 2.

Vous aurez vu la même utilisation de "descripteur de fichier" dans des lignes comme :

./cmd 2>&1

Ce qui veut dire "courir ./cmd redirigeant fd 2 (stderr) vers fd 1 (stdout).

L'utilisation normale de -t est de dire si l'entrée provient d'un terminal :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X