bash "echo" einschließlich "" in der Mitte erstellen Datei - bitte erläutern

8

Wenn ich schreibe:

%Vor%

In meinem Bash-Terminal wird eine neue Datei namens 5 in meinem Verzeichnis erstellt, die folgendes enthält:

%Vor%

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

    
secluded 03.06.2016, 20:28
quelle

3 Antworten

7

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%     
heemayl 03.06.2016, 20:36
quelle
12

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.

    
cxw 03.06.2016 20:30
quelle
3

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%     
Jeff Bowman 03.06.2016 20:31
quelle

Tags und Links