it-swarm.dev

Co dosahuje výstup do / dev / null v bash skriptech?

Často jsem narazil na malé bash skripty, které používají tento druh syntaxe v příkazech if:

some command > /dev/null 2>&1

Jaký je účel výstupu do /dev/null to se líbí a co dělá 2>&1 znamenat?

Zdá se, že to vždy funguje, ale rád bych věděl, co dělá.

145
javanix

>/dev/null přesměruje standardní výstup příkazu na nulové zařízení, což je speciální zařízení, které zahodí informace, které jsou do něj zapsány

2>&1 přesměruje standardní chybový tok na standardní výstupní tok (stderr = 2, stdout = 1). Všimněte si, že to vezme standardní chybový proud a v tomto okamžiku jej nasměruje na stejné místo jako standardní výstup. To je důvod pro objednávku >/some/where 2>&1, protože je třeba nejprve bodovat stdout někam a pak bodovat stderr na stejné místo, pokud chceme na konci kombinovat oba proudy.

V praxi to zabraňuje zobrazení výstupů z příkazu (jak stdout, tak stderr). Používá se, když vám záleží na výstupu příkazu.

191
João Pinto

STDIN je reprezentován 0, STDOUT 1 a STDERR 2.

/ dev/null je bitový kbelík: místo, kde skládáte všechno, co nepotřebujete.


STDOUT je tedy přesměrován do bitové nádoby (koše) a STDERR je přesměrován na místo, kde je STDOUT umístěn: bitové kbelík.


Můžete také:

>/dev/null 2>/dev/null
70
Sid