Hoe stderr om te leiden naar stdout in Bash

How Redirect Stderr Stdout Bash



Commando's in Linux vergen enige invoer van de gebruiker, wat een bestand of een attribuut kan zijn, en bij uitvoering geven ze een uitvoer die standaarduitvoer wordt genoemd. De standaarduitvoer kan een geslaagde uitvoer of een foutuitvoer zijn; beide worden weergegeven op uw terminalscherm. Maar in sommige gevallen wilt u standaarduitvoer opslaan in een bestand om de code te testen of te debuggen. In Linux kunnen deze outputs worden omgeleid naar een bestand, en het proces om het vast te leggen wordt omleiding genoemd.







Elk proces in Linux produceert drie datastromen, stdin, stdout en stderr:



  • standaard : Neemt invoer van de gebruiker via het toetsenbord
  • stout : Geeft de uitvoer weer op het scherm
  • stderr : Toont foutinformatie op het scherm

Elke datastroom heeft een numerieke id:



Numerieke ID Naam
0 standaard
1 stout
2 stderr

Laten we de omleiding wat gedetailleerder uitleggen:





Hoe standaarduitvoer en standaardfout in Bash om te leiden:

Om de standaarduitvoer van de opdracht om te leiden, gebruiken we 1 met een omleidingsoperator die groter is dan het >-teken:

$ls 1>stdout.txt

De bovenstaande opdracht maakt een bestand aan en plaatst de standaarduitvoer van de opdracht ls in het bestand stdout.txt.



Om het bestand stdout.txt te lezen, gebruikt u:

$katstdout.txt

We kunnen de standaardfout ook naar een bestand omleiden door de opdracht te gebruiken:

$katmijnbestand.txt2>stderr.txt

Om het bestand stderr.txt te bekijken, gebruikt u:

$katstderr.txt

Zorg ervoor dat gebruik 2 groter is dan het > teken. Aangezien er geen myfile.txt-bestand in de directory staat, zal het cat-commando een foutmelding geven die zal worden toegevoegd aan het stderr.txt-bestand.

Deze standaarduitgangen kunnen ook worden omgeleid met een enkele opdracht, gebruik:

$ls 1>stdout.txt2>stderr.txt

De uitvoer van het ls-commando wordt geschreven in de stdout.txt bestand, maar de stderr.txt blijft leeg omdat er geen fout zou zijn.

Laten we nu doen voor stderr.txt:

$katmijnbestand.txt1>stdout.txt2>stderr.txt

Gebruik de onderstaande opdracht om stderr.txt te lezen.

$katstderr.txt

En natuurlijk zal stdout.txt leeg zijn.

Conclusie :

Linux-opdracht bij uitvoering geeft standaarduitvoer die een geslaagde uitvoer of een foutuitvoer kan zijn. Over het algemeen kunnen deze outputs niet worden omgeleid met behulp van omleidingsoperators; we moeten specifieke numerieke id's gebruiken met het > teken. In deze handleiding hebben we geleerd hoe we deze numerieke toetsen kunnen gebruiken om standaarduitvoer om te leiden naar een bestand met voorbeelden.