GNU/Linux >> Znalost Linux >  >> Linux

Jak přesměrovat výstup do /dev/null v Linuxu

V Linuxu jsou programy velmi běžně přístupné pomocí příkazového řádku a výstup jako takový se zobrazuje na obrazovce terminálu. Výstup se skládá ze dvou částí:STDOUT (Standardní výstup ), který obsahuje informační protokoly a zprávy o úspěchu, a STDERR (Standardní chyba ), který obsahuje chybové zprávy.

Výstup mnohokrát obsahuje mnoho informací, které nejsou relevantní a zbytečně zatěžují systémové prostředky. Zejména v případě složitých automatizačních skriptů, kde je spouštěno mnoho programů za sebou, je zobrazený protokol obrovský.

V takových případech můžeme využít pseudozařízení soubor ‘/dev/null k přesměrování výstupu. Když je výstup přesměrován na /dev/null , je okamžitě zahozen, takže nedochází k žádnému využití zdrojů.

Podívejme se, jak přesměrovat výstup na /dev/null v Linuxu.

Vezměme si příklad příkazu mv, který se pokouší přesunout dva soubory do určitého adresáře, kde se jeden soubor úspěšně přesune (zobrazí STDOUT ) a druhý zobrazí chybu při pohybu (zobrazí STDERR ).

$ mv -v tmp.c /etc/apt/sources.list /tmp

Poznámka :'-v' argument k mv zobrazí protokol úspěchu při přesunutí souboru. Bez příznaku se do STDOUT nevytiskne nic .

Nyní pro přesměrování pouze STDOUT na /dev/null , tj. chcete-li zahodit standardní výstup, použijte následující:

$ mv -v tmp.c /etc/apt/sources.list /tmp 1>/dev/null

Co znamená „1>/dev/null“?

Zde '1' označuje STDOUT , což je standardní celé číslo přidělené Linuxem pro totéž. Operátor '>' , nazývaný operátor přesměrování, zapisuje data do souboru. Soubor zadaný v tomto případě je /dev/null . Data jsou tedy nakonec vyřazena.

Pokud byl místo /dev/null zadán jakýkoli jiný soubor , standardní výstup by byl zapsán do tohoto souboru.

Podobně přesměrovat pouze STDERR na /dev/null , použijte celé číslo '2' místo '1' . Celé číslo '2' znamená standardní chybu.

$ mv -v tmp.c /etc/apt/sources.list /tmp 2>/dev/null

Jak můžete vidět, standardní chyba se nyní na terminálu nezobrazuje, protože je zahozena v /dev/null .

Nakonec zlikvidujte obě STDOUT a STDERR současně použijte následující:

$ mv -v tmp.c /etc/apt/sources.list /tmp &>/dev/null

Znak ampersand ('&') označuje, že standardní výstup i standardní chyba musí být přesměrovány na /dev/null a vyřazeny. Na posledním snímku obrazovky tedy nevidíme vůbec žádný výstup vytištěný na obrazovce.

Závěr

V tomto článku jsme viděli, jak přesměrovat výstup na /dev/null . Totéž lze použít buď v příkazu, nebo ve složitých skriptech Bash, které generují velké množství protokolu. V případě, že skript potřebuje ladění nebo je třeba jej otestovat; v takových případech je protokol vyžadován pro správné zobrazení a analýzu chyb.

V případech, kdy je výstup již znám a očekáván, lze jej zahodit pomocí /dev/null . Pokud máte nějaké dotazy nebo zpětnou vazbu, dejte nám vědět v komentářích níže!


Linux
  1. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Co jsou soubory /dev/zero a /dev/null v Linuxu

  1. Jak převést potrubí /dev/urandom do linuxového zvukového výstupu?

  2. Přesměrujte stderr na /dev/null

  3. Jak vytvořit /dev/null?

  1. Jak vyměnit vadný pevný disk v softwarovém RAID systému Linux

  2. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  3. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?