logo

Bash Rašyti į failą

Kai paleidžiame bet kurią komandą bash apvalkale, ji paprastai išspausdina tos komandos išvestį į terminalą, kad galėtume ją nedelsiant perskaityti. Tačiau bash taip pat suteikia galimybę „peradresuoti“ bet kurios bash komandos išvestį į žurnalo failą. Jis gali įrašyti išvestį į tekstinį failą, kad galėtume jį peržiūrėti vėliau, kai tik to prireiks.

1 būdas: Įrašykite išvestį tik į failą

Norėdami įrašyti Bash komandų išvestį į failą, galime naudoti stačiojo kampo skliaustą (>) arba dvigubą stačiakampį ženklą (>>):

Dešinysis kampinis skliaustas ženklas (>)

Jis naudojamas bash komandos išvesties įrašymui į disko failą. Jei failo nurodytu pavadinimu nėra, tada sukuriamas naujas failas tokiu pačiu pavadinimu. Jei failas yra nurodytu pavadinimu, failo turinys bus perrašytas.

Dvigubas dešiniojo kampo ženklas (>>)

Jis naudojamas įrašyti bash komandų išvestį į failą, pridedant išvestį prie esamo failo turinio. Jei failo nėra, jis sukuria naują nurodytu pavadinimu.

Techniškai abu šie operatoriai peradresuoja „stdout“ (standartinį išvestį) į failą.

Paprastu būdu, kai rašome failą pirmą kartą ir nenorime, kad faile būtų ankstesni duomenys, turėtume naudoti stačiakampio skliausto ženklą (>). Jis perrašys turinį, jei jis jau yra faile. O kitame scenarijuje galime naudoti dvigubą stačiakampį ženklą (>>), kad pridėtume duomenis prie failo.

Pavyzdys

Komanda „ls“ naudojama spausdinti visus dabartiniame kataloge esančius failus ir aplankus. Bet kai paleidžiame komandą „ls“ su stačiu kampu skliausteliuose (>), ji nespausdins failų ir aplankų sąrašo ekrane. Jis išsaugos išvestį faile, kurį su juo nurodysime, ty, kaip parodyta toliau:

Bash scenarijus

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

Išvestis

Bash Rašyti failą

Kaip parodyta čia, komandos „ls“ išvestis nukreipiama į failą. Norėdami išspausdinti failo turinį į terminalą, galime naudoti komandą „cat“ tokia forma:

Bash scenarijus

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

Išvestis

Bash Rašyti failą

Jei norime nukreipti kelių komandų išvestį į vieną failą neištrindami turimų duomenų, galime naudoti operatorių >>. Tarkime, kad norime pridėti sistemos informaciją prie nurodyto failo, tai galime padaryti tokiu būdu:

Bash scenarijus

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

Išvestis

Bash Rašyti failą

Čia antrosios komandos rezultatas pridedamas prie failo pabaigos.

kas yra prologas

Šį procesą galime pakartoti keletą kartų, kad išvestis būtų pridėta prie failo pabaigos.

2 būdas: spausdinkite paprastai ir įrašykite į failą

Kai kuriems žmonėms gali nepatikti rašyti išvestį į failą naudojant > arba >> operatorius, nes terminale komandos išvesties nebus. Štai kodėl naudojama komanda „tee“. Komanda „tee“ naudojama spausdinti į ekraną gaunamą įvestį. Jis gali išsaugoti išvestį į failą tuo pačiu metu.

Bash scenarijus

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

Išvestis

Bash Rašyti failą

Tai nepaisys failo turinio, kaip ir operatorius >, bet taip pat išspausdins išvestį ekrane.

Jei norime įrašyti išvestį į failą nepašalindami failo turinio naudodami komandą tee, galime naudoti šią formą, kuri taip pat išspausdins išvestį į terminalą:

Bash scenarijus

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

Išvestis

Bash Rašyti failą

Tai ne tik pridės išvestį prie failo pabaigos, bet ir išspausdins išvestį ekrane.