Lorsque vous utilisez Git Il semble savoir par magie si la standard est en cours un tuyau ou dans un fichier vs lorsqu'il est affiché sur la console. Par exemple, si vous avez des couleurs activées et que vous faites il colorisera la sortie pour différentes catégories de fichiers répertoriés. Cependant, si vous faites p> ou p> il supprime le Mise en forme de couleur Linux et vous ne voyez que du texte simple et non coloré. P> Comment GIT CODE> Détectez si la sortie de ses commandes va au fichier vs aller sur le terminal? P> P>
4 Réponses :
Homme Page: http://linux.die.net/man/3/isatty < / a> p>
En bar: Si vous souhaitez lire à partir d'un programme à l'aide d'un autre programme, mais que vous souhaitez tromper isatty (int fd) code> vérifiera si la FD se réfère à un terminal ou à quelque chose d'autre. Cela fait partie de
unisd.h code> dans la bibliothèque GNU C. P>
Isatty code> en pensant que votre programme est un humain, il existe un moyen de le faire. Vous pouvez utiliser un pseudo-terminal (PTY). Cette technique est utilisée par Attendez-vous , par exemple. P>
Ceci est un code C pour démontrer comment détecter si la sortie standard est redirigée: C'est ainsi que GIT sait si la sortie va sur le terminal ou à un fichier. p> p>
peut confirmer que c'est ce que GIT s'appuie sur: exécutez contre l'arborescence source GIT. P> Notez que FDS 0 = stdin, 1 = stdout, 2 = stdout, 2 = stdout Par défaut, mais ceux-ci peuvent bien sûr être ré-dirigés ou fermés (généralement si vous êtes un démon, vous fermez vos descripteurs de fichiers et re-ouvrez ceux que vous souhaitez). P> P>
à partir d'un script shell, utilisez l'indicateur de test code> code> sur le descripteur de fichier 0 (entrée standard).
Exemples: P>
# Any Bourne-style shell [ -t 0 ] && echo This is a terminal # Modern interactive shells: ksh, bash, zsh [[ -t 0 ]] && echo This is a terminal
Je ne pense pas que cela devrait être sur superutilisateur, car l'OP est vraiment recherché, c'est comment le programme est-il. Git détecte où il est redirigé ou non.
Je suis d'accord avec @ tommieb75 C'est une question API, pas une question d'administration.
Au fait, si vous n'étiez pas simplement curieux, et que vous demandiez cela parce que vous vouliez avoir une sortie colorée et i> Sortie pagaie de git, vous pouvez gérer avec
GIT CONFIG code> Paramètres Comme
core.pager code> (moins) et
couleur.pager code> (vrai). Kernel.org/pub/software/scm/git/ docs / git-config.html