GNU/Linux >> Linux Esercitazione >  >> Linux

Impedire a un comando di inviare sia Stdout che Stderr a qualsiasi terminale o file?

Questa domanda ha già risposte qui :reindirizzamento a /dev/null

(6 risposte)
Chiuso 6 anni fa.

Vorrei impedire al mio programma di inviare stdout e stderr a qualsiasi terminale, file o dispositivo. Per questo, ho tre comandi che mi passano per la mente, ma non riesco a distinguere le loro differenze. Potresti per favore spiegarmi il significato di ciascuno di essi per favore.

# ./run > /dev/null
# ./run > /dev/null 1>&2
# ./run > /dev/null 2>&1

Risposta accettata:

# ./run > /dev/null

Questo reindirizza stdout a /dev/null , ma non fa nulla con stderr. Dal momento che hai chiesto di reindirizzare da stdout e stderr, questo non fa quello che vuoi.

# ./run > /dev/null 1>&2

Questo reindirizza stdout a /dev/null , quindi reindirizza nuovamente stdout (1> ) ovunque punti stderr (&2 ) che è probabilmente il terminale ed è probabilmente il punto in cui puntava stdout prima di reindirizzarlo. Quindi l'effetto netto qui è (probabilmente) nessun reindirizzamento per stdout e, per quanto riguarda stderr, non ci fai ancora nulla. Quindi anche questo non è quello che vuoi.

# ./run > /dev/null 2>&1

Questo reindirizza stdout a /dev/null , quindi reindirizza stderr (2> ) verso il punto a cui punta stdout, che è /dev/null perché è lì che l'hai appena reindirizzato. Questo sembra essere quello che vuoi.

Non riesco a distinguere le loro differenze.

In realtà, dovresti essere in grado di distinguere le differenze abbastanza facilmente. Diciamo ./run contiene questo:

#!/bin/sh
echo stdout
echo stderr >&2

Quindi i risultati dovrebbero essere i seguenti:

# ./run > /dev/null
stderr
# ./run > /dev/null 1>&2
stdout
stderr
# ./run > /dev/null 2>&1

La differenza è evidente!


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  4. Cosa sono i file /dev/zero e /dev/null in Linux

  5. Come creare un file in Linux dalla finestra del terminale?

/dev/null in Linux

Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

Come eseguire il file sh da un altro file sh

Reindirizza stderr a /dev/null

Reindirizza stdout mentre un processo è in esecuzione:qual è il processo che invia a /dev/null

Perché sono necessari < o > per usare /dev/tcp