logo

Bash Pisanje v datoteko

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

Bash Write File

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

Bash Write File

Č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

Bash Write File

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

Bash Write File

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

Bash Write File

To ne bo samo dodalo izhoda na konec datoteke, ampak tudi natisnilo izhod na zaslon.