logo

Bash pisanje u datoteku

Kada pokrenemo bilo koju naredbu u bash ljusci, ona općenito ispisuje izlaz te naredbe na terminal tako da ga možemo odmah pročitati. Ali bash također nudi opciju za 'preusmjeravanje' izlaza bilo koje bash naredbe u datoteku dnevnika. Može spremiti izlaz u tekstualnu datoteku kako bismo ga kasnije mogli pregledati kad god je potrebno.

Metoda 1: Zapišite izlaz samo u datoteku

Za pisanje izlaza Bash naredbi u datoteku, možemo upotrijebiti znak desne kutne zagrade (>) ili dvostruki znak pravog kuta (>>):

Znak desne kutne zagrade (>)

Koristi se za pisanje izlaza naredbe bash u datoteku diska. Ako ne postoji datoteka s navedenim nazivom, tada se stvara nova datoteka s istim nazivom. Ako postoji datoteka s navedenim nazivom, tada će sadržaj datoteke biti prebrisan.

Dvostruki znak pravog kuta (>>)

Koristi se za pisanje izlaza bash naredbi u datoteku, dodajući izlaz postojećem sadržaju datoteke. Ako datoteka nije prisutna, stvara se nova s ​​navedenim nazivom.

Tehnički, oba ova operatora preusmjeravaju 'stdout (standardni izlaz)' u datoteku.

Na jednostavan način, kada prvi put pišemo datoteku i ne želimo da prethodni podaci budu prisutni u datoteci, trebali bismo upotrijebiti znak desne uglate zagrade (>). Prebrisat će sadržaj ako je već prisutan u datoteci. A u daljnjoj skripti možemo koristiti dvostruki znak pravog kuta (>>) za dodavanje podataka u datoteku.

Primjer

Naredba 'ls' koristi se za ispis svih datoteka i mapa prisutnih u trenutnom direktoriju. Ali kada pokrenemo naredbu 'ls' sa znakom desne kutne zagrade (>), ona neće ispisati popis datoteka i mapa na ekranu. Spremit će izlaz u datoteku koju odredimo s njim, tj. kao što je prikazano u nastavku:

Bash skripta

 #!/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 

Izlaz

Bash pisanje datoteke

Kao što je prikazano ovdje, izlaz naredbe 'ls' preusmjerava se u datoteku. Za ispis sadržaja datoteke na terminal, možemo koristiti naredbu 'cat' u sljedećem obliku:

Bash skripta

 #!/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 

Izlaz

Bash pisanje datoteke

Ako želimo preusmjeriti izlaz više naredbi u jednu datoteku bez brisanja dostupnih podataka, tada možemo koristiti operator >>. Pretpostavimo da želimo dodati informacije o sustavu navedenoj datoteci, to možemo učiniti na sljedeći način:

Bash skripta

 #!/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 

Izlaz

Bash pisanje datoteke

Ovdje se rezultat druge naredbe dodaje na kraj datoteke.

faktorijel u Javi

Ovaj postupak možemo ponoviti nekoliko puta kako bismo nastavili dodavati izlaz na kraj datoteke.

Metoda 2: Ispišite izlaz na normalan način i zapišite ga u datoteku

Neki ljudi možda neće voljeti pisanje izlaza u datoteku pomoću > ili >> operatora, jer neće biti izlaza naredbe u terminalu. Zato se koristi naredba 'tee'. Naredba 'tee' koristi se za ispis ulaza koji prima na zaslon. Može spremiti izlaz u datoteku u isto vrijeme.

Bash skripta

 #!/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 

Izlaz

Bash pisanje datoteke

Ovo će nadjačati sadržaj datoteke, baš kao i operator >, ali također ispisati izlaz na ekranu.

Ako želimo napisati izlaz u datoteku bez uklanjanja sadržaja datoteke pomoću naredbe tee, možemo koristiti sljedeći obrazac koji će također ispisati izlaz na terminal:

Bash skripta

 #!/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 

Izlaz

Bash pisanje datoteke

Ovo ne samo da će dodati izlaz na kraj datoteke, već i ispisati izlaz na ekranu.