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
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
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
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
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
Ovo ne samo da će dodati izlaz na kraj datoteke, već i ispisati izlaz na ekranu.