web-dev-qa-db-fra.com

echo> & 2 "du texte" qu'est-ce que cela signifie dans les scripts Shell

J'ai vu echo être utilisé de cette manière dans de nombreux endroits:

echo >&2 message text ...

Qu'est-ce que ça veut dire?

Je comprends 2>&1, cependant, je ne suis pas sûr de savoir comment interpréter l’utilisation ci-dessus.

Quelqu'un peut-il s'il vous plaît expliquer?

52
CuriousMind

Pour expliquer rapidement ce que les autres ont manqué:

echo "hey" >&2

> rediriger la sortie standard (implicite 1>)

& ce qui vient ensuite est un descripteur de fichier, pas un fichier (uniquement pour le côté droit de >)

2 numéro de descripteur de fichier stderr

Rediriger stdout de echo commande vers stderr. (Si vous deviez utiliserecho "hey" >2 vous produiriez hey dans un fichier nommé 2)

99
Jite

L'utilisation de >&2 ici envoie la sortie en erreur standard au lieu de sortie standard. C’est généralement le meilleur endroit pour envoyer des sorties de journalisation qui ne sont pas le résultat réel du calcul, en particulier si le résultat est imprimé sur une sortie standard (éventuellement redirigée vers un fichier) plutôt que vers un autre fichier de sortie (c’est-à-dire un envoi de erreur standard garantit qu'il ne sera pas inclus avec la sortie réelle qui a été redirigée vers le fichier de sortie).

23

La redirection >&2 Est un raccourci pour 1>& 2.

Vous comprenez 2>& 1 Et vous comprendrez donc que cela relie la commande stdout au courant stderr

8
Henk Langeveld

Alors que les autres réponses donnent de bonnes explications, il leur manque la question exacte qui est posée ici. La meilleure réponse est sous la forme d'un commentaire directement sur la question, mais hélas, Stack Overflow ne me considère pas digne de pouvoir ajouter des commentaires.

Donc, en citant tripleee :

La position prédise [ sic ] de la redirection dans la ligne de commande n'a pas d'importance. Tous >&2 echo message et echo >&2 message et echo message >&2 sont équivalents.

C’est la question exacte que je suis venue chercher, et aucune des réponses actuelles ne répond à cela; ils expliquent simplement des choses que je savais déjà. D'autre part, la question pourrait bénéficier d'une meilleure formulation, mais encore une fois, je suis empêché de commenter, alors ...

2
Dave.Haku