Keď spustíme akýkoľvek príkaz v bash shell, vo všeobecnosti vypíše výstup tohto príkazu do terminálu, aby sme ho mohli okamžite prečítať. Ale bash tiež poskytuje možnosť „presmerovať“ výstup akéhokoľvek bash príkazu do súboru denníka. Môže uložiť výstup do textového súboru, aby sme si ho mohli neskôr kedykoľvek v prípade potreby prezrieť.
Metóda 1: Zapíšte výstup iba do súboru
Ak chcete zapísať výstup príkazov Bash do súboru, môžeme použiť znamienko v pravom uhle (>) alebo dvojité znamienko pravého uhla (>>):
Značka pravouhlej zátvorky (>)
Používa sa na zápis výstupu príkazu bash do súboru na disku. Ak neexistuje žiadny súbor so zadaným názvom, vytvorí sa nový súbor s rovnakým názvom. Ak sa tam nachádza súbor so zadaným názvom, obsah súboru sa prepíše.
Dvojitý znak pravého uhla (>>)
Používa sa na zápis výstupu príkazov bash do súboru, pričom výstup sa pripojí k existujúcemu obsahu súboru. Ak súbor neexistuje, vytvorí sa nový so zadaným názvom.
Technicky oba tieto operátory presmerujú „stdout (štandardný výstup)“ do súboru.
Jednoduchým spôsobom, keď zapisujeme súbor prvýkrát a nechceme, aby boli v súbore prítomné predchádzajúce údaje, mali by sme použiť znamienko v pravej hranatej zátvorke (>). Prepíše obsah, ak sa už v súbore nachádza. A v ďalšom skripte môžeme použiť dvojitý pravý uhol (>>) na pripojenie údajov k súboru.
Príklad
Príkaz 'ls' sa používa na tlač všetkých súborov a priečinkov prítomných v aktuálnom adresári. Ale keď spustíme príkaz 'ls' so znamienkom v pravých hranatých zátvorkách (>), nevytlačí zoznam súborov a priečinkov na obrazovku. Výstup sa uloží do súboru, ktorý s ním zadáme, t. j. ako je uvedené nižšie:
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
Výkon
Ako je tu znázornené, výstup príkazu 'ls' je presmerovaný do súboru. Na vytlačenie obsahu súboru do terminálu môžeme použiť príkaz „cat“ v nasledujúcom tvare:
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
Výkon
Ak chceme presmerovať výstup viacerých príkazov do jedného súboru bez vymazania dostupných údajov, potom môžeme použiť operátor >>. Predpokladajme, že chceme k určenému súboru pripojiť systémové informácie, môžeme to urobiť nasledujúcim spôsobom:
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
Výkon
Tu sa výsledok druhého príkazu pripojí na koniec súboru.
mediálny prenos
Tento proces môžeme zopakovať niekoľkokrát, aby sme výstup pripojili na koniec súboru.
Metóda 2: Normálne vytlačte výstup a zapíšte ho do súboru
Niektorým ľuďom sa nemusí páčiť zapisovanie výstupu do súboru pomocou operátorov > alebo >>, pretože v termináli nebude žiadny výstup príkazu. Preto sa používa príkaz „tee“. Príkaz 'tee' sa používa na vytlačenie vstupu, ktorý dostane, na obrazovku. Zároveň môže uložiť výstup do súboru.
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
Výkon
Toto prepíše obsah súboru, rovnako ako operátor >, ale tiež vytlačí výstup na obrazovku.
Ak chceme zapísať výstup do súboru bez odstránenia obsahu súboru pomocou príkazu tee, môžeme použiť nasledujúci formulár, ktorý výstup vytlačí aj na terminál:
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
Výkon
Toto nielenže pripojí výstup na koniec súboru, ale aj vytlačí výstup na obrazovku.