Comment combiner stdout et stderr pour différents coques?


18

Je connais la réponse pour certains obus, par exemple avec cmd.exevous pouvez:

some.exe > out.txt 2>&1

Comment obtenez-vous la même chose pour d'autres shells (bash, ksh, tcsh, powershell, etc.)?

Réponses:


16

Coquille de poisson

Pour rediriger à la fois la sortie standard et l'erreur standard vers le fichier all_output.txt, vous pouvez écrire:

echo Hello > all_output.txt ^&1

3
si la sortie passe à la commande suivante, utilisez 2> | à la place: echo Hello 2> | moins
Jeffrey04

La syntaxe de la tuyauterie peut avoir changé. Ma coquille de poisson utilise la même syntaxe "^ & 1" pour les deux.
Keith Bentrup

2>&1fonctionne également - ^est essentiellement le raccourci du poisson pour >2. Notez que 2>| lessou ^| lesspar lui-même les tuyaux ne sont que stderr; pour canaliser à la fois notre et err, faire^&1 | less
Beni Cherniavsky-Paskin

Des raccourcis de syntaxe pour rediriger / rediriger et errer sont toujours en discussion github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

Dans Powershell, c'est exactement la même chose:

2> & 1 Envoie des erreurs au processus d'obtention aucun, PowerShell 2> & 1
          flux de sortie de succès.

(à partir de about_Redirection).

Dans bashet ksh au moins, je sais aussi que cela fonctionne de cette façon.

Cela semble être une convention commune.

Un moyen rapide de le découvrir est d'ouvrir la page de manuel du shell et d'effectuer une recherche &1(avec /puis en tapant &1). Cela se produit rarement dans d'autres contextes.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.