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
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
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
Č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
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
Tai ne tik pridės išvestį prie failo pabaigos, bet ir išspausdins išvestį ekrane.