logo

Bash Schrijven naar een bestand

Wanneer we een opdracht in een bash-shell uitvoeren, wordt de uitvoer van die opdracht doorgaans naar de terminal afgedrukt, zodat we deze onmiddellijk kunnen lezen. Maar bash biedt ook een optie om de uitvoer van een bash-commando naar een logbestand te 'omleiden'. Het kan de uitvoer opslaan in een tekstbestand, zodat we het later kunnen bekijken wanneer dat nodig is.

Methode 1: Uitvoer alleen naar een bestand schrijven

Om de uitvoer van Bash-opdrachten naar een bestand te schrijven, kunnen we een haakjesteken (>) of een dubbel haaks teken (>>) gebruiken:

Haakse beugelbord (>)

Het wordt gebruikt om de uitvoer van het bash-commando naar een schijfbestand te schrijven. Als er geen bestand is met de opgegeven naam, wordt er een nieuw bestand met dezelfde naam gemaakt. Als het bestand daar staat met de opgegeven naam, wordt de inhoud van het bestand overschreven.

Dubbel haaks bord (>>)

Het wordt gebruikt om de uitvoer van bash-opdrachten naar een bestand te schrijven, waarbij de uitvoer aan de bestaande inhoud van het bestand wordt toegevoegd. Als het bestand niet aanwezig is, wordt er een nieuw bestand gemaakt met de opgegeven naam.

Technisch gezien leiden beide operatoren 'stdout (de standaarduitvoer)' om naar een bestand.

Op een eenvoudige manier moeten we, wanneer we het bestand voor de eerste keer schrijven en niet willen dat eerdere gegevens in het bestand aanwezig zijn, het haakje-teken (>) gebruiken. Het overschrijft de inhoud als deze al in het bestand aanwezig is. En in het verdere script kunnen we een dubbel rechthoekig teken (>>) gebruiken om de gegevens aan een bestand toe te voegen.

Voorbeeld

De opdracht 'ls' wordt gebruikt om alle bestanden en mappen in de huidige map af te drukken. Maar als we de opdracht 'ls' uitvoeren met een haakje (>), wordt de lijst met bestanden en mappen niet op het scherm afgedrukt. Het zal de uitvoer opslaan in het bestand dat we ermee specificeren, dat wil zeggen, zoals hieronder weergegeven:

Bash-script

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt 

Uitvoer

Bash-schrijfbestand

Zoals hier wordt weergegeven, wordt de uitvoer van de opdracht 'ls' omgeleid naar een bestand. Om de inhoud van een bestand naar de terminal af te drukken, kunnen we het commando 'cat' in de volgende vorm gebruiken:

Bash-script

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output 

Uitvoer

Bash-schrijfbestand

Als we de uitvoer van meerdere opdrachten naar één bestand willen omleiden zonder de beschikbare gegevens te verwijderen, kunnen we de operator >> gebruiken. Stel dat we de systeeminformatie aan het opgegeven bestand willen toevoegen, dan kunnen we dat op de volgende manier doen:

Bash-script

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt 

Uitvoer

Bash-schrijfbestand

Hier wordt het resultaat van de tweede opdracht aan het einde van het bestand toegevoegd.

mockito wanneer dan ook

We kunnen dit proces verschillende keren herhalen om de uitvoer aan het einde van het bestand te blijven toevoegen.

Methode 2: Uitvoer normaal afdrukken en naar een bestand schrijven

Sommige mensen houden er misschien niet van om uitvoer naar een bestand te schrijven met de operatoren > of >>, omdat er geen uitvoer van de opdracht in de terminal zal zijn. Daarom wordt het commando 'tee' gebruikt. Het 'tee'-commando wordt gebruikt om de ontvangen invoer op het scherm af te drukken. Het kan de uitvoer tegelijkertijd in een bestand opslaan.

Bash-script

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output 

Uitvoer

Bash-schrijfbestand

Hierdoor wordt de inhoud van het bestand overschreven, net als de operator >, maar wordt de uitvoer ook op het scherm afgedrukt.

Als we de uitvoer naar een bestand willen schrijven zonder de inhoud van het bestand te verwijderen met de opdracht tee, kunnen we het volgende formulier gebruiken dat de uitvoer ook naar de terminal afdrukt:

Bash-script

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output 

Uitvoer

Bash-schrijfbestand

Hierdoor wordt de uitvoer niet alleen aan het einde van het bestand toegevoegd, maar wordt de uitvoer ook op het scherm afgedrukt.