Umleitung: Wie kam das zusätzliche Wort in die Datei?

969
Dennis Williamson

Ich testete ein Skript und wollte eine kleine Datei mit etwas Text darin erstellen. Deshalb tippte ich Folgendes und vergaß, das Leerzeichen im Dateinamen zu entgehen:

echo "bob">other name 

Wenn ich es tat ls, zeigte es die Datei "other" und als ich es tat cat other, zeigte es den Inhalt als:

bob name 

Wie ist "Name" in die Datei gekommen? Ich glaube, ich habe irgendwo gesehen, dass Sie die Weiterleitung in einen Befehl einfügen können. Ich habe das gerade getestet:

echo >other Some text in a file 

und "etwas Text in einer Datei" war der Inhalt von "anderen".

Was ist der Zweck dieser Funktion?

Natürlich hätte ich ursprünglich schreiben sollen:

echo "bob">other\ name 
5

1 Antwort auf die Frage

13
John T

So funktioniert die Bash-Umleitung.

Schreibe das:

echo "bob">other name 

ist gleichbedeutend mit:

echo "bob" name >other 

Die Umleitung kann an beliebiger Stelle in der Zeile erscheinen, der Chevron ( >) gilt nur für "Andere".

Dies ermöglicht es den Menschen, flexibel zu sein, wie sie ihre Befehle strukturieren möchten. Wenn es klarer aussieht, tun Sie so etwas:

>file.txt echo "one" "two" "three" 

Dann liegt es an der Person, die das Skript oder den Befehl schreibt.