Jak uložit výstup příkazu do souboru v Bash (aka terminál Linux a MacOS)
Když spustíte příkaz v příkazu bash, normálně vytiskne výstup tohoto příkazu přímo do terminálu, takže ho můžete ihned přečíst. Ale bash také umožňuje "přesměrovat" výstup libovolného příkazu, uložit jej do textového souboru, abyste mohli později přehlédnout výstup.
To funguje v bash na libovolném operačním systému, od Linuxu a MacOSu až po prostředí Windows 10 založené na Ubuntu.
Možnost č. 1: Přesměrování výstupu pouze na soubor
Chcete-li použít přesměrování bash, spusťte příkaz a zadejte příkaz >
nebo >>
operátor a poté zadejte cestu souboru, na který chcete přesměrovat výstup.
-
>
přesměruje výstup příkazu do souboru a nahrazuje stávající obsah souboru. -
>>
přesměruje výstup příkazu do souboru a připojuje výstup k existujícímu obsahu souboru.
Technicky to přesměruje "stdout" - standardní výstup, což je obrazovka - do souboru.
Zde je jednoduchý příklad. The ls
příkaz seznam souborů a složek v aktuálním adresáři. Tak. při spuštění následujícího příkazu, ls
zobrazí seznam souborů a složek v aktuálním adresáři. Nevytiskne je však na obrazovku - uloží je do zadaného souboru.
ls> / cesta / do / souboru
Nemusíte zadávat cestu k existujícímu souboru. Určete jakoukoli platnou cestu a bash vytvoří soubor na daném místě.
Pokud zobrazíte obsah souboru, uvidíte ls
výstup příkazu. Např kočka
příkaz tiskne obsah souboru do terminálu:
kočka / cesta / do / souboru
Nezapomeňte, že
operátor nahrazuje stávající obsah souboru s výstupem příkazu. Pokud chcete uložit výstup několika příkazů do jednoho souboru, použijte >
operátor místo. Například následující příkaz připojí systémové informace k zadanému souboru:>>
uname -a >> / cesta / do / souboru
Pokud soubor dosud neexistuje, soubor bash vytvoří soubor. V opačném případě bude bash ponechat samotný obsah souboru a připojit výstup na konec souboru.
Při zobrazení obsahu souboru uvidíte, že výsledky druhého příkazu byly připojeny ke konci souboru:
Tento proces můžete opakovat tolikrát, kolik chcete, aby se výstup připojil na konec souboru.
Druhá možnost: Vytisknout normálně výstup a přesměrovat jej do souboru
Možná nebudete rádi přesměrování výstupu pomocí příkazu >
nebo >>
operátory, protože neuvidíte výstup příkazu v terminálu. To je to, co tee
příkaz je pro. Příkaz tee vytiskne vstup, který přijme, na obrazovku a uloží ji současně do souboru.
Provedení výstupu příkazu do tee
, tisknout na obrazovku a uložit ji do souboru, použijte následující syntaxi:
příkaz | tee / cesta / do / souboru
Tím se nahradí vše v souboru s výstupem příkazu, stejně jako příkaz >
operátor.
Provedení výstupu příkazu do tee
, tisk na obrazovku a uložení do souboru, ale připojení na konec souboru:
příkaz | tee -a / cesta / do / souboru
To připojí výstup na konec souboru, stejně jako >>
operátor.
Bash shell obsahuje některé další pokročilé operátory, které mají podobné funkce. Bude užitečné zejména při psaní bash skriptů. Podrobnější informace naleznete v kapitole Přesměrování I / O v příručce Advanced Bash-Scripting Guide.