Wenn ich schreibe:
%Vor% In meinem Bash-Terminal wird eine neue Datei namens 5
in meinem Verzeichnis erstellt, die folgendes enthält:
Ich möchte wissen, was genau hier vor sich geht und warum bekomme ich diese Ausgabe? Ich glaube, es ist offensichtlich, dass ich neu in Linux bin! Danke
bash
führt zuerst die Ausgabeumleitung aus, d. h. >5
wird zuerst ausgeführt, und eine Datei namens 5
wird erstellt (oder abgeschnitten, wenn sie bereits existiert). Der resultierende Dateideskriptor bleibt für die Laufzeit des Befehls echo
geöffnet.
Dann wird der verbleibende Teil, 2*3 is a valid inequality
, als Argument für echo
ausgeführt, und die Standardausgabe wird in der (bereits geöffneten) Datei 5
eventuell gespeichert.
Um die gesamte Zeichenfolge als Ausgabe zu erhalten, verwenden Sie einfache oder doppelte Anführungszeichen:
%Vor% In bash können Umleitungen überall in der Zeile vorkommen (aber Sie sollten es nicht tun! --- siehe das Bash-Hacker-Tutorial ). Bash nimmt die >5
als Umleitung, erstellt die Ausgabedatei 5
und verarbeitet dann die restlichen Argumente. Daher tritt echo 2*3 is a valid inequality
auf, was Ihnen die Ausgabe liefert, die Sie in der Ausgabedatei 5
sehen.
Was Sie wahrscheinlich wollen, ist
%Vor%oder
%Vor% (mit einfachen Anführungszeichen), von denen Ihnen beide die Nachricht geben, die Sie in der Befehlszeile als Ausdruck angeben. Der Unterschied besteht darin, dass innerhalb von ""
Variablen (wie $foo
) ausgefüllt werden, aber nicht innerhalb von ''
.
Bearbeiten : Die bash man
Seite sagt, dass die
Umleitungsoperatoren können innerhalb eines einfachen Befehls vorangehen oder erscheinen oder einem Befehl folgen. Umleitungen werden in der Reihenfolge, in der sie angezeigt werden, von links nach rechts verarbeitet.
Dies ist ein Beispiel für die Ausgabeumleitung . Sie weisen die echo-Anweisung an, statt in den Standardausgang zu schreiben, in einen Dateinamen zu schreiben. Dieser Dateiname ist zufällig "5".
Sie können dieses Verhalten vermeiden, indem Sie Folgendes angeben:
%Vor%Tags und Links linux bash shell io-redirection