logo

Bash Skriv til en fil

Når vi kører en kommando i en bash-shell, udskriver den generelt outputtet af den kommando til terminalen, så vi kan læse den med det samme. Men bash giver også en mulighed for at 'omdirigere' outputtet af enhver bash-kommando til en logfil. Det kan gemme outputtet i en tekstfil, så vi kan gennemgå det senere, når det er nødvendigt.

Metode 1: Skriv kun output til en fil

For at skrive outputtet af Bash-kommandoer til en fil, kan vi bruge retvinklet parentestegn (>) eller dobbelt retvinklet tegn (>>):

Højrevinklet beslagskilt (>)

Det bruges til at skrive output fra bash-kommandoen til en diskfil. Hvis der ikke er nogen fil med det angivne navn, opretter den en ny fil med samme navn. Hvis filen er der med det angivne navn, vil indholdet af filen blive overskrevet.

Dobbelt retvinklet skilt (>>)

Det bruges til at skrive output fra bash-kommandoer til en fil, ved at tilføje output til det eksisterende indhold af filen. Hvis filen ikke er til stede, opretter den en ny med det angivne navn.

Teknisk set omdirigerer begge disse operatører 'stdout (standardoutputtet)' til en fil.

På en enkel måde, når vi skriver filen for første gang og ikke ønsker at tidligere data skal være til stede i filen, skal vi bruge det retvinklede parentes tegn (>). Det vil overskrive indholdet, hvis det allerede er til stede i filen. Og i det videre script kan vi bruge dobbelt retvinklet tegn (>>) til at tilføje dataene til en fil.

Eksempel

Kommandoen 'ls' bruges til at udskrive alle filer og mapper i den aktuelle mappe. Men når vi kører 'ls'-kommandoen med et retvinklet parentes-tegn (>), vil den ikke udskrive listen over filer og mapper til skærmen. Det gemmer outputtet til den fil, vi angiver med det, dvs. som vist nedenfor:

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 

Produktion

Bash skrive fil

Som vist her omdirigeres outputtet af 'ls'-kommandoen til en fil. For at udskrive indholdet af en fil til terminalen kan vi bruge kommandoen 'cat' i følgende form:

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 

Produktion

Bash skrive fil

Hvis vi ønsker at omdirigere outputtet af flere kommandoer til en enkelt fil uden at slette de tilgængelige data, så kan vi bruge >>-operatoren. Antag, at vi ønsker at tilføje systemoplysningerne til den angivne fil, kan vi gøre det på følgende måde:

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 

Produktion

Bash skrive fil

Her tilføjes resultatet af den anden kommando til slutningen af ​​filen.

afinstaller angular cli

Vi kan gentage denne proces flere gange for at blive ved med at tilføje output til slutningen af ​​filen.

Metode 2: Udskriv output normalt og skriv det til en fil

Nogle mennesker kan ikke lide at skrive output til en fil ved hjælp af > eller >> operatorer, da der ikke vil være nogen output af kommandoen i terminalen. Derfor bruges 'tee'-kommandoen. 'Tee'-kommandoen bruges til at udskrive de input, den modtager, til skærmen. Det kan gemme output til en fil på samme tid.

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 

Produktion

Bash skrive fil

Dette vil tilsidesætte indholdet af filen, ligesom > operatøren, men også udskrive outputtet på skærmen.

Hvis vi ønsker at skrive outputtet til en fil uden at fjerne indholdet af filen ved hjælp af tee-kommandoen, kan vi bruge følgende formular, som også vil udskrive outputtet til terminalen:

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 

Produktion

Bash skrive fil

Dette vil ikke kun tilføje output til slutningen af ​​filen, men også udskrive output på skærmen.