4Sep

Ako uložiť výstup príkazu do súboru v Bash( aka terminál Linux a MacOS)

Keď spustíte príkaz na výzvu bash, normálne 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 ľubovoľného príkazu a uložiť ho do textového súboru, aby ste mohli neskôr skontrolovať výstup.

Toto funguje v bash na ľubovoľnom operačnom systéme, od Linuxu a MacOS po Windows bash prostredia Windows 10.

Možnosť jedna: Presmerovanie výstupu do súboru

Ak chcete použiť presmerovanie bash, spustite príkaz, zadajte reťazec & gt;alebo>operátora a potom zadajte cestu k súboru, na ktorý chcete presmerovať výstup.

  • & gt;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. Príkaz ls uvádza zoznam súborov a priečinkov v aktuálnom adresári. So.keď spustíte nasledujúci príkaz, ls zobrazí zoznam súborov a priečinkov v aktuálnom adresári. Nevytlačí ich na obrazovku - uloží ich do zadaného súboru.

ls>/path/to/ súbor

Nemusíte špecifikovať cestu k existujúcemu súboru. Zadajte akúkoľvek platnú cestu a bash vytvorí súbor na danom mieste.

Ak uvidíte obsah súboru, uvidíte výstup príkazu ls. Príkaz cat napríklad vytlačí obsah súboru do terminálu:

mačka /path/to/ súbor

Pamätajte, že & gt;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 & gt; & gt;namiesto operátora. Napríklad nasledujúci príkaz pripojí systémové informácie k zadanému súboru:

uname -a & gt; & gt;/path/to/ súbor

Ak súbor ešte neexistuje, bash vytvorí súbor. V opačnom prípade bude bash ponechať samotný obsah súboru a pripojiť výstup na koniec súboru.

Keď uvidíte obsah súboru, uvidíte, že výsledky druhého príkazu boli pripojené na koniec súboru:

Tento proces môžete opakovať toľkokrát, koľkokrát chcete, aby výstup zostal pripojený na koniec súboru.súboru.

Druhý variant: Normálne vytlačiť výstup a presmerovať ho do súboru

Možno nebudete chcieť presmerovať výstup s & gt;alebo>operátorov, pretože nevidíte výstup príkazu v termináli. To je to, čo je odpoveď pre tee. Príkaz tee vytlačí vstup, ktorý prijme, na obrazovku a ju uloží do súboru súčasne.

Ak chcete vytlačiť výstup príkazu, ktorý ho vytlačí, vytlačíte ho na obrazovku a uložíte ho do súboru, použite nasledovnú syntax: príkaz

|tee /path/to/ súbor

Týmto sa nahradí všetko v súbore výstupom príkazu, rovnako ako & gt;operátor.

Ak chcete vytlačiť výstup príkazu na odpoveď, vytlačiť na obrazovku a uložiť ho do súboru, ale pripojiť ho na koniec súboru: príkaz

|tee -a /path/to/ súbor

Pripojí sa výstup ku koncu súboru, rovnako ako & gt; & gt;operátor.

Bash shell 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.