Všichni víme, jak spuštění příkazu v příkazovém řádku Linuxu, Terminálu, vede ke spuštění příkazu a vytištění výsledků v samotném Terminálu. Někdy toto okamžité zobrazení výstupu nestačí, zvláště pokud chceme výstup uložit pro pozdější použití. Naštěstí je bash Linuxu a všech operačních systémů bash vybaven možností vytisknout výstup příkazu do zadaného souboru. V tomto článku se budeme zabývat následujícími dvěma úkoly:
- Uložení výstupu příkazu do souboru
- Tisk výstupu na terminálu a jeho uložení do souboru
Příkazy zmíněné v tomto článku byly provedeny na systému Ubuntu 18.04 LTS.
Uložení výstupu příkazu do souboru
Uvedeme několik příkladů, kde bude výstup příkazů uložen pod názvem souboru, který určíme.
Vytvořit nový soubor/nahradit existující soubor
Pokud chcete uložit výstup příkazu do nového souboru nebo nahradit obsah již existujícího souboru výstupem příkazu, použijte prosím následující syntaxi:
$ [command] > [/filelocation/filename]
Například použiji příkaz lscpu (který zobrazuje systémové informace) a poté vytisknu jeho obsah do souboru s názvem systeminformation.txt. Tento soubor již v mém systému neexistuje.
Když přistupuji k tomuto souboru přes správce souborů, vypadá to takto:
Přidat výstup ke stávajícímu souboru
Pokud chcete uložit výstup linuxového příkazu do souboru, aniž byste se zabývali jeho již existujícím obsahem, můžete použít následující syntaxi:
$ [command] >> [/filelocation/filename]
Například následující příkaz připojí výsledek příkazu ls na konec mého již existujícího souboru systeminformation.txt.
Následující soubor, který kdysi obsahoval pouze moje systémové informace, nyní obsahuje také výstup příkazu my ls:
Tisk výstupu na terminálu a jeho uložení do souboru
Možná jste si všimli, že příkazy, které jsme zmínili výše, pouze ukládají výstup do souboru, aniž by je tiskly na samotném terminálu. Pokud chcete zobrazit výstup příkazu také na terminálu, použijte následující syntaxi:
$ [command] | tee [/filelocation/filename]
Například text, který chceme echo na následujícím obrázku, bude nyní echoován na Terminálu a také vytištěn do souboru myfile.txt.
Toto je obsah souboru generovaného příkazem:
Pokud chcete připojit výstup příkazu k již existujícímu souboru. Dodržujte prosím tuto syntaxi:
$ [command] | tee -a [/filelocation/filename]
Například následující obrázek ukazuje, jak bude ozvěna ještě nějaký text a poté přidán do mého již existujícího souboru:
Takto soubor nyní vypadá:
Tyto textové soubory orientované na výstup, které jsme vygenerovali prostřednictvím tohoto článku, mohou být v některých případech mnohem užitečnější než obvyklý tisk výstupu na terminálu. Tak mocný je bash Ubuntu!