Ko zaženemo kateri koli ukaz v lupini bash, ta na splošno natisne izhod tega ukaza na terminal, tako da ga lahko takoj preberemo. Toda bash nudi tudi možnost 'preusmeritve' izhoda katerega koli ukaza bash v datoteko dnevnika. Izhod lahko shrani v besedilno datoteko, tako da ga lahko pozneje pregledamo, kadar koli je to potrebno.
1. način: Zapišite izhod samo v datoteko
Če želite zapisati izhod ukazov Bash v datoteko, lahko uporabimo desni kotni oklepaj (>) ali dvojni desni kotni znak (>>):
Znak desnega kotnega oklepaja (>)
Uporablja se za pisanje izhoda ukaza bash v diskovno datoteko. Če ni datoteke s podanim imenom, ustvari novo datoteko z istim imenom. Če je datoteka tam z navedenim imenom, bo vsebina datoteke prepisana.
Dvojni pravi kotni znak (>>)
Uporablja se za pisanje izhoda ukazov bash v datoteko, pri čemer se izhod doda obstoječi vsebini datoteke. Če datoteke ni, ustvari novo z navedenim imenom.
Tehnično gledano oba operaterja preusmerita 'stdout (standardni izhod)' v datoteko.
Preprosto povedano, ko pišemo datoteko prvič in ne želimo, da so v datoteki prisotni predhodni podatki, uporabimo desni oklepaj (>). Prepisal bo vsebino, če je že prisotna v datoteki. In v nadaljnjem skriptu lahko uporabimo dvojni pravokotni znak (>>), da dodamo podatke v datoteko.
Primer
Ukaz 'ls' se uporablja za tiskanje vseh datotek in map v trenutnem imeniku. Ko pa zaženemo ukaz 'l' s pravim oglatim oklepajem (>), ne bo natisnil seznama datotek in map na zaslon. Izhod bo shranil v datoteko, ki jo določimo z njim, tj. kot je prikazano spodaj:
Bash skript
#!/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
Izhod
Kot je prikazano tukaj, je izhod ukaza 'ls' preusmerjen v datoteko. Za tiskanje vsebine datoteke na terminal lahko uporabimo ukaz 'cat' v naslednji obliki:
Bash skript
#!/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
Izhod
Če želimo preusmeriti izhod več ukazov v eno samo datoteko, ne da bi izbrisali razpoložljive podatke, potem lahko uporabimo operator >>. Recimo, da želimo pripeti sistemske informacije določeni datoteki, to lahko storimo na naslednji način:
Bash skript
#!/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
Izhod
Tukaj je rezultat drugega ukaza pripet na konec datoteke.
notranje delovanje hashmapa
Ta postopek lahko ponovimo večkrat, da še naprej dodajamo izhod na konec datoteke.
2. način: Običajno natisnite izpis in ga zapišite v datoteko
Nekaterim morda ne bo všeč pisanje izhoda v datoteko z uporabo operatorjev > ali >>, saj v terminalu ne bo izpisa ukaza. Zato se uporablja ukaz 'tee'. Ukaz 'tee' se uporablja za tiskanje vnosa, ki ga prejme na zaslon. Izhod lahko hkrati shrani v datoteko.
Bash skript
#!/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
Izhod
To bo preglasilo vsebino datoteke, tako kot operator >, vendar bo tudi natisnilo izhod na zaslon.
Če želimo zapisati izhod v datoteko, ne da bi odstranili vsebino datoteke z ukazom tee, lahko uporabimo naslednji obrazec, ki bo tudi natisnil izhod na terminal:
Bash skript
#!/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
Izhod
To ne bo samo dodalo izhoda na konec datoteke, ampak tudi natisnilo izhod na zaslon.