Ha bármilyen parancsot futtatunk egy bash shellben, az általában kiírja a parancs kimenetét a terminálra, hogy azonnal elolvashassuk. De a bash lehetőséget biztosít bármely bash parancs kimenetének naplófájlba való „átirányítására”. A kimenetet szöveges fájlba tudja menteni, hogy később bármikor ellenőrizhessük, amikor szükség van rá.
1. módszer: A kimenet írása csak fájlba
A Bash parancsok kimenetének fájlba írásához használhatunk derékszögű zárójelet (>) vagy kettős derékszögű jelet (>>):
Derékszögű zárójel (>)
A bash parancs kimenetének lemezfájlba írására szolgál. Ha nincs a megadott nevű fájl, akkor létrehoz egy új fájlt azonos néven. Ha a fájl ott van a megadott néven, akkor a fájl tartalma felülíródik.
Dupla derékszögű jel (>>)
Arra használják, hogy a bash parancsok kimenetét fájlba írják, hozzáfűzve a kimenetet a fájl meglévő tartalmához. Ha a fájl nincs jelen, akkor létrehoz egy újat a megadott néven.
Technikailag mindkét operátor átirányítja az „stdout-ot (a szabványos kimenet)” egy fájlba.
Egyszerűen, amikor először írjuk a fájlt, és nem akarjuk, hogy korábbi adatok jelenjenek meg a fájlban, használjuk a derékszögű zárójelet (>). Felülírja a tartalmat, ha az már jelen van a fájlban. A további szkriptben pedig dupla derékszögű jelet (>>) használhatunk, hogy az adatokat fájlhoz fűzzük.
Példa
Az 'ls' parancs az aktuális könyvtárban található összes fájl és mappa kinyomtatására szolgál. De ha az 'ls' parancsot derékszögű zárójellel (>) futtatjuk, akkor nem nyomtatja ki a fájlok és mappák listáját a képernyőre. A kimenetet a vele megadott fájlba menti, azaz az alábbiak szerint:
Bash Script
#!/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
Kimenet
Amint az itt látható, az 'ls' parancs kimenete át van irányítva egy fájlba. Egy fájl tartalmának a terminálra való kinyomtatásához használhatjuk a 'cat' parancsot a következő formában:
Bash Script
#!/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
Kimenet
Ha több parancs kimenetét szeretnénk átirányítani egyetlen fájlba anélkül, hogy a rendelkezésre álló adatokat törölnénk, akkor használhatjuk a >> operátort. Tegyük fel, hogy a rendszerinformációkat szeretnénk hozzáfűzni a megadott fájlhoz, ezt a következő módon tehetjük meg:
Bash Script
#!/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
Kimenet
Itt a második parancs eredménye a fájl végéhez fűződik.
hogyan lehet kitörni a while ciklusból a java
Ezt a folyamatot többször megismételhetjük, hogy a kimenetet a fájl végéhez fűzzük.
2. módszer: Nyomtassa ki a kimenetet normál módon, és írja be egy fájlba
Előfordulhat, hogy néhány ember nem szereti a kimenetet fájlba írni > vagy >> operátorokkal, mivel a parancs kimenete nem lesz a terminálban. Ezért használják a „tee” parancsot. A 'tee' paranccsal a kapott bemenetet a képernyőre nyomtatják. A kimenetet egyidejűleg fájlba tudja menteni.
Bash Script
#!/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
Kimenet
Ez felülírja a fájl tartalmát, akárcsak a > operátor, de kinyomtatja a kimenetet is a képernyőn.
Ha a kimenetet fájlba akarjuk írni anélkül, hogy a fájl tartalmát eltávolítanánk a tee paranccsal, használhatjuk a következő űrlapot, amely a kimenetet a terminálra is kiírja:
Bash Script
#!/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
Kimenet
Ez nem csak a kimenetet hozzáfűzi a fájl végéhez, hanem ki is nyomtatja a képernyőre.