Když spustíme jakýkoli příkaz v bash shellu, obvykle vypíše výstup tohoto příkazu do terminálu, takže jej můžeme okamžitě přečíst. Bash však také poskytuje možnost „přesměrovat“ výstup libovolného příkazu bash do souboru protokolu. Umí uložit výstup do textového souboru, abychom si jej mohli později prohlédnout, kdykoli bude potřeba.
Metoda 1: Zapsat výstup pouze do souboru
Chcete-li zapsat výstup příkazů Bash do souboru, můžeme použít pravoúhlou závorku (>) nebo dvojitou pravoúhlou značku (>>):
Značka pravoúhlé závorky (>)
Používá se k zápisu výstupu příkazu bash do souboru na disku. Pokud neexistuje žádný soubor se zadaným názvem, vytvoří se nový soubor se stejným názvem. Pokud je tam soubor se zadaným názvem, bude obsah souboru přepsán.
Dvojitá značka pravého úhlu (>>)
Používá se k zápisu výstupu příkazů bash do souboru a připojení výstupu k existujícímu obsahu souboru. Pokud soubor není přítomen, vytvoří se nový se zadaným názvem.
Technicky oba tyto operátory přesměrovávají „stdout (standardní výstup)“ do souboru.
Jednoduchým způsobem, když zapisujeme soubor poprvé a nechceme, aby v souboru byla předchozí data, měli bychom použít znaménko pravé lomené závorky (>). Přepíše obsah, pokud je již v souboru přítomen. A v dalším skriptu můžeme použít dvojité pravoúhlé znaménko (>>) k připojení dat k souboru.
Příklad
Příkaz 'ls' se používá k tisku všech souborů a složek v aktuálním adresáři. Ale když spustíme příkaz 'ls' se znaménkem v pravé lomené závorce (>), nevytiskne se seznam souborů a složek na obrazovku. Uloží výstup do souboru, který s ním určíme, tj. jak je uvedeno níže:
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ýstup
Jak je zde ukázáno, výstup příkazu 'ls' je přesměrován do souboru. Pro tisk obsahu souboru na terminál můžeme použít příkaz 'cat' v následujícím tvaru:
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ýstup
Pokud chceme přesměrovat výstup více příkazů do jednoho souboru, aniž bychom smazali dostupná data, pak můžeme použít operátor >>. Předpokládejme, že chceme k zadanému souboru připojit systémové informace, můžeme to udělat následujícím způsobem:
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ýstup
Zde je výsledek druhého příkazu připojen na konec souboru.
linuxový hostitel
Tento proces můžeme několikrát opakovat, abychom výstup připojili na konec souboru.
Metoda 2: Normální tisk výstupu a zápis do souboru
Někomu se nemusí líbit zápis výstupu do souboru pomocí operátorů > nebo >>, protože v terminálu nebude žádný výstup příkazu. Proto se používá příkaz 'tee'. Příkaz 'tee' se používá k vytištění vstupu, který obdrží, na obrazovku. Zároveň může výstup uložit do souboru.
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ýstup
To přepíše obsah souboru, stejně jako operátor >, ale také vytiskne výstup na obrazovku.
Pokud chceme zapsat výstup do souboru bez odstranění obsahu souboru pomocí příkazu tee, můžeme použít následující formulář, který výstup také vytiskne 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ýstup
Tím se nejen připojí výstup na konec souboru, ale také se výstup vytiskne na obrazovku.