Kun suoritamme minkä tahansa komennon bash-kuoressa, se yleensä tulostaa komennon tulosteen päätteeseen, jotta voimme lukea sen välittömästi. Mutta bash tarjoaa myös mahdollisuuden 'uudelleenohjata' minkä tahansa bash-komennon tulos lokitiedostoon. Se voi tallentaa tulosteen tekstitiedostoon, jotta voimme tarkistaa sen myöhemmin aina, kun sitä tarvitaan.
Tapa 1: Kirjoita tuloste vain tiedostoon
Bash-komentojen tulosteen kirjoittamiseksi tiedostoon voimme käyttää suorakulmahakasulkumerkkiä (>) tai kaksoisoikeakulmamerkkiä (>>):
Oikea kulmasulkumerkki (>)
Sitä käytetään bash-komennon tulosteen kirjoittamiseen levytiedostoon. Jos määritetyllä nimellä ei ole tiedostoa, se luo uuden tiedoston samalla nimellä. Jos tiedosto on siellä määritetyllä nimellä, tiedoston sisältö korvataan.
Kaksoisoikea kulmamerkki (>>)
Sitä käytetään bash-komentojen tulosteen kirjoittamiseen tiedostoon ja tulosteen liittämiseen tiedoston olemassa olevaan sisältöön. Jos tiedostoa ei ole, se luo uuden määritetyllä nimellä.
Teknisesti molemmat operaattorit ohjaavat 'stdout'n (vakiotulosteen) tiedostoon.
Yksinkertaisesti sanottuna, kun kirjoitamme tiedostoa ensimmäistä kertaa emmekä halua, että tiedostossa on aiempia tietoja, meidän tulisi käyttää oikeaa kulmasulkumerkkiä (>). Se korvaa sisällön, jos se on jo tiedostossa. Ja seuraavassa skriptissä voimme käyttää kaksoissuorakulmamerkkiä (>>) tietojen liittämiseksi tiedostoon.
Esimerkki
ls-komentoa käytetään kaikkien nykyisessä hakemistossa olevien tiedostojen ja kansioiden tulostamiseen. Mutta kun suoritamme ls-komennon suorakulmahakasulkeella (>), se ei tulosta tiedostojen ja kansioiden luetteloa näytölle. Se tallentaa tulosteen tiedostoon, jonka määritämme sen kanssa, eli alla olevan kuvan mukaisesti:
Bash-skripti
#!/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
Lähtö
Kuten tässä näkyy, ls-komennon tulos ohjataan tiedostoon. Voit tulostaa tiedoston sisällön päätelaitteelle käyttämällä 'cat' -komentoa seuraavassa muodossa:
Bash-skripti
#!/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
Lähtö
Jos haluamme ohjata useiden komentojen tulosteet yhteen tiedostoon poistamatta saatavilla olevia tietoja, voimme käyttää >>-operaattoria. Oletetaan, että haluamme liittää järjestelmätiedot määritettyyn tiedostoon, voimme tehdä sen seuraavalla tavalla:
Bash-skripti
#!/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
Lähtö
Tässä toisen komennon tulos liitetään tiedoston loppuun.
minun näytön koko
Voimme toistaa tämän prosessin useita kertoja jatkaaksemme tulosteen liittämistä tiedoston loppuun.
Tapa 2: Tulosta normaalisti ja kirjoita se tiedostoon
Jotkut ihmiset eivät ehkä pidä tulosteen kirjoittamisesta tiedostoon käyttämällä >- tai >>-operaattoreita, koska komentoa ei tulosteta päätteessä. Tästä syystä 'tee'-komentoa käytetään. Tee-komentoa käytetään vastaanottamansa syötteen tulostamiseen näytölle. Se voi tallentaa tulosteen tiedostoon samanaikaisesti.
Bash-skripti
#!/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
Lähtö
Tämä ohittaa tiedoston sisällön, kuten operaattori >, mutta myös tulostaa tulosteen näytölle.
Jos haluamme kirjoittaa tulosteen tiedostoon poistamatta tiedoston sisältöä tee-komennolla, voimme käyttää seuraavaa lomaketta, joka myös tulostaa tulosteen päätteeseen:
Bash-skripti
#!/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
Lähtö
Tämä ei vain lisää tulostetta tiedoston loppuun, vaan myös tulostaa tulosteen näytölle.