Når vi kjører en kommando i et bash-skall, skriver den vanligvis ut utdataene fra den kommandoen til terminalen slik at vi kan lese den umiddelbart. Men bash gir også en mulighet til å 'omdirigere' utdataene fra en hvilken som helst bash-kommando til en loggfil. Den kan lagre utdataene i en tekstfil slik at vi kan se den senere når det er nødvendig.
Metode 1: Skriv utdata kun til en fil
For å skrive utdata fra Bash-kommandoer til en fil, kan vi bruke rettvinklet parentestegn (>) eller dobbelt rettvinklet tegn (>>):
Høyre vinkelbrakettskilt (>)
Den brukes til å skrive utdataene fra bash-kommandoen til en diskfil. Hvis det ikke er noen fil med det angitte navnet, opprettes en ny fil med samme navn. Hvis filen er der med det angitte navnet, vil innholdet i filen bli overskrevet.
Dobbelt rettvinklet skilt (>>)
Den brukes til å skrive utdataene fra bash-kommandoer til en fil, og legge utdataene til det eksisterende innholdet i filen. Hvis filen ikke er til stede, oppretter den en ny med det angitte navnet.
Teknisk sett omdirigerer begge disse operatørene 'stdout (standardutgangen)' til en fil.
På en enkel måte, når vi skal skrive filen for første gang og ikke ønsker at tidligere data skal være til stede i filen, bør vi bruke det rette vinkelparentes-tegnet (>). Den vil overskrive innholdet hvis det allerede finnes i filen. Og i det videre skriptet kan vi bruke dobbelt rettvinklet tegn (>>) for å legge til dataene til en fil.
Eksempel
'ls'-kommandoen brukes til å skrive ut alle filene og mappene i gjeldende katalog. Men når vi kjører 'ls'-kommandoen med et rettvinklet parentes-tegn (>), vil den ikke skrive ut listen over filer og mapper på skjermen. Det vil lagre utdataene til filen vi spesifiserer med den, det vil si 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
Produksjon
Som vist her, blir utdataene fra 'ls'-kommandoen omdirigert til en fil. For å skrive ut innholdet i en fil til terminalen, kan vi bruke 'cat'-kommandoen 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
Produksjon
Hvis vi ønsker å omdirigere utdataene fra flere kommandoer til en enkelt fil uten å slette tilgjengelige data, kan vi bruke >>-operatoren. Anta at vi ønsker å legge til systeminformasjonen til den angitte filen, kan vi gjøre det på følgende måte:
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
Produksjon
Her legges resultatet av den andre kommandoen til på slutten av filen.
starter med java
Vi kan gjenta denne prosessen flere ganger for å fortsette å legge til utdataene til slutten av filen.
Metode 2: Skriv ut utskriften normalt og skriv den til en fil
Noen mennesker liker kanskje ikke å skrive utdata til en fil ved å bruke > eller >> operatorer, siden det ikke vil være noen utgang av kommandoen i terminalen. Det er derfor 'tee'-kommandoen brukes. 'Tee'-kommandoen brukes til å skrive ut input som den mottar til skjermen. Det kan lagre utdataene til en fil samtidig.
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
Produksjon
Dette vil overstyre innholdet i filen, akkurat som >-operatøren, men også skrive ut utdataene på skjermen.
Hvis vi vil skrive utdataene til en fil uten å fjerne innholdet i filen ved å bruke tee-kommandoen, kan vi bruke følgende skjema som også vil skrive ut utdataene 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
Produksjon
Dette vil ikke bare legge utdata til slutten av filen, men også skrive ut utdataene på skjermen.