GNU/Linux >> Znalost Linux >  >> Linux

Jak vytisknout výstup příkazu Linuxu do souboru?

Použijte > operátor:

rsync -v > log.txt

zapíše výstup příkazu rsync do souboru s názvem log.txt .


Svůj skript můžete zavolat a přesměrovat „standardní výstup“ (AKA STDOUT) do souboru protokolu. Použijte '>>' pro připojení k souboru protokolu nebo '>' pro přepsání souboru protokolu. Soubor bude vytvořen (pokud to oprávnění v jeho adresáři umožňují), pokud ještě neexistuje. Pokud soubor již existuje, ujistěte se, že do něj můžete zapisovat vy (nebo kdokoli, kdo spouští váš skript).

Pokud k souboru protokolu vždy připojujete místo přepisování, je dobrým zvykem se hned od začátku ujistit, že něco „otočí“ váš soubor protokolu, tedy přesunout jej na jiné jméno a odstranit starší soubory protokolu. Pokud je soubor protokolu jedinečný pro váš skript, můžete skript nechat, aby se postaral o rotaci souboru protokolu.

Obvykle je preferovaným způsobem volání skriptu s přesměrovaným STDOUT, ale mohou nastat situace, kdy budete chtít provést přesměrování v rámci samotného skriptu pro jeden nebo více příkazů. Můžete přidat ">> logfile" za jakýkoli příkaz ve skriptu shellu a připojit STDOUT tohoto příkazu k logfile. Můžete to změnit na "2>&1>> logfile" a připojit tak "standardní chybu" (AKA STDERR) a STDOUT do logfile. Obvykle nechcete, aby STDERR také šel do souboru protokolu, protože STDERR se obvykle používá k upozornění čehokoli/kdokoli, kdo spouští skript, o problému. Ale jsou chvíle a situace, kdy to chcete. Pokud chcete, můžete seskupit příkazy ve skriptu uvnitř { a } a přesměrovat STDOUT celé skupiny najednou tak, že přesměrování vložíte za tuto uzavírací závorku.


Kromě výše uvedeného, ​​pokud chcete vidět výstup vytištěný na obrazovku A do souboru pro archivaci/grepping/atd., možná budete chtít „tee " výstup. Je to skvělý příkaz a je pojmenován po trubce T, která se nachází ve skutečném instalatérství, a funguje dobře pro "subkonzole", jako je mysql atd.

Příkaz je tee ... zde je příklad zkopírovaný od uživatele jménem "toydi":

Chcete-li současně zobrazit a zaprotokolovat výstup z příkazu:ls -l | tee -a file.log V tomto příkladu zobrazí výstup seznamu adresářů a také výstup uloží do souboru.log. Volba -asignals příkaz k připojení namísto přepsání souboru.

Podívejte se také na obrázek na wikipedii, kde najdete pěknou vizualizaci toho, jak tee funguje. Chtěl bych na to odkazovat, ale nemám dost "bodů reputace" na zveřejnění více než 1 odkazu a cítil jsem, že si "toydi" zaslouží uznání :)


Linux
  1. Jak přiřadit výstup příkazu Linux k proměnné

  2. Jak uložit výstup příkazu do souboru v Linuxu

  3. Jak zachytit výstup top příkazu do souboru v linuxu?

  1. Jak vyprázdnit soubor protokolu v Linuxu

  2. Jak připojit výstup do souboru?

  3. Jak přesměrovat výstup příkazu time do souboru v Linuxu?

  1. Linux File Command:Jak určit typ souboru v Linuxu

  2. Jak odstranit (smazat) soubor nebo adresář v Linuxu

  3. Jak používat příkaz md5sum v Linuxu