Ako uložiť výstup príkazu do súboru v Bash (aka terminál Linux a MacOS)
Keď spustíte príkaz na riadku bash, bežne vytlačí výstup tohto príkazu priamo do terminálu, aby ste si ho mohli ihneď prečítať. Ale bash vám tiež umožňuje "presmerovať" výstup akéhokoľvek príkazu, uložiť ho do textového súboru, aby ste mohli neskôr skontrolovať výstup.
To funguje v bash na ľubovoľnom operačnom systéme, od Linuxu a MacOS až po Windows Ubuntu.
Možnosť jedna: presmerovanie výstupu na súbor iba
Ak chcete použiť presmerovanie bash, spustite príkaz a zadajte príkaz >
alebo >>
operátora a potom zadajte cestu k súboru, do ktorého chcete presmerovať výstup.
-
>
presmeruje výstup príkazu do súboru a nahrádza existujúci obsah súboru. -
>>
presmeruje výstup príkazu do súboru a pripojí výstup k existujúcemu obsahu súboru.
Technicky to presmeruje "stdout" - štandardný výstup, ktorým je obrazovka - do súboru.
Tu je jednoduchý príklad. ls
príkaz obsahuje zoznam súborov a priečinkov v aktuálnom adresári. So. keď spustíte nasledujúci príkaz, ls
zobrazí súbory a priečinky v aktuálnom adresári. Nevytlačí ich na obrazovku - uloží ich do zadaného súboru.
ls> / path / to / file
Nemusíte určovať cestu k existujúcemu súboru. Zadajte akúkoľvek platnú cestu a bash vytvorí súbor na danom mieste.
Ak si prezriete obsah súboru, uvidíte ls
príkazu. Napríklad mačka
príkaz vytlačí obsah súboru do terminálu:
mačka / cesta / do / súboru
Nezabudnite, že
operátor nahradí existujúci obsah súboru výstupom príkazu. Ak chcete uložiť výstup viacerých príkazov do jedného súboru, použite >
namiesto toho. Napríklad nasledujúci príkaz pripojí systémové informácie k zadanému súboru:>>
uname -a >> / cesta / do / súbor
Ak súbor ešte neexistuje, súbor bash vytvorí súbor. V opačnom prípade bude bash ponechať existujúci obsah súboru sám a pripojiť výstup na koniec súboru.
Keď uvidíte obsah súboru, uvidíte výsledky druhého príkazu, ktoré boli pripojené na koniec súboru:
Tento proces môžete zopakovať toľkokrát, koľkokrát chcete, aby výstup zostal pripojený na koniec súboru.
Možnosť druhá: Výstup tlače normálne a presmerovanie do súboru
Nesmiete radi presmerovať výstup pomocou >
alebo >>
operátorov, pretože nevidíte výstup príkazu v termináli. To je to, čo tee
príkaz je pre. Príkaz tee vytlačí vstup, ktorý prijme, na obrazovku a uloží ho súčasne do súboru.
Pripravenie výstupu príkazu na tee
, tlačte ho na obrazovku a uložte ju do súboru, použite nasledujúcu syntax:
príkaz | tee / cesta / do / súboru
Tým sa nahradí všetko v súbore výstupom príkazu, rovnako ako >
operátor.
Pripravenie výstupu príkazu na tee
, tlač na obrazovku a uloženie do súboru, ale pripojenie na koniec súboru:
príkaz | tee -a / cesta / do / súboru
Toto pripojí výstup na koniec súboru, rovnako ako >>
operátor.
Balík bash obsahuje niektoré ďalšie pokročilé operátory, ktoré vykonávajú podobné funkcie. Budú to obzvlášť užitočné, ak píšete bash skripty. Podrobnejšie informácie nájdete v kapitole Presmerovanie I / O v príručke Advanced Bash-Scripting Guide.