GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Reihenfolge der Umleitungen?

Ich verstehe nicht ganz, wie der Computer diesen Befehl liest.

cat file1 file2 1> file.txt 2>&1

Wenn ich das verstehe, 2>&1 leiten Sie Standardfehler einfach zur Standardausgabe um.

Nach dieser Logik liest sich der Befehl für mich wie folgt:

  1. Dateien verketten file1 und file2 .

  2. stdout senden von dieser Operation zu file.txt .

  3. sende stderr zu stdout .

  4. Ende?

Ich bin mir nicht sicher, was der Computer macht. Nach meiner Logik sollte der Befehl

sein

cat file1 file2 2>&1 > file.txt

aber das ist nicht richtig.

Akzeptierte Antwort:

Ich finde es einfacher, an Zuweisungen zu denken.

  • > ist wie =
  • & ist wie $

Sie beginnen mit

1 = /dev/tty
2 = /dev/tty

dann Ihr erstes Beispiel, 1> file.txt 2>&1 , nicht

1 = file.txt
2 = $1           # and currently $1 = file.txt

Sie verlassen mit

1 = file.txt
2 = file.txt

Wenn Sie es anders gemacht haben, beginnen Sie wieder mit

1 = /dev/tty
2 = /dev/tty

dann 2>&1 > file.txt tut

2 = $1           # and currently $1 = /dev/tty
1 = file.txt

das Endergebnis ist also

1 = file.txt
2 = /dev/tty

und Sie haben nur stdout umgeleitet , nicht stderr .


Linux
  1. TCPdump filtern:Ordnung aus Chaos schaffen

  2. Zeilen in einer Datei zählen?

  3. C fopen gegen offen

  4. Was ist eine .so.2-Datei?

  5. Was ist eine .so-Datei?

Grundlegendes zu Linux-Dateiberechtigungen

Bash:In Datei schreiben

Linux-Tail-Befehl

Linux Touch-Befehl

VIM-Editor

Was ist eine .sh-Datei?