wenn ich einen bestimmten Befehl eingebe, erhalte ich manchmal eine Ausgabe, die so aussieht.
>
>
>
>
Worauf GENAU beziehen sich die > Symbole?
Antwort1
Dein Fall
Das Symbol ">" bedeutet in diesem Fall, dass das Terminal weitere Eingaben verlangt, nachdem Sie aufeingebenSchlüssel.
In Ihrem Fall haben Sie eine Zeichenfolge, die nicht geschlossen wurde. Wenn ich beispielsweise den folgenden Befehl eingebe echo "Hello
und dann die Eingabetaste drücke, erhalte ich ein ">", bis ich die Zeichenfolge schließe. Beispiel:
Wenn ich eingebe:
eric@Ubuntu: /home/eric$ echo "Hello
>what?
>single quotes won't close it?'
>but double quotes will! "
Es würde die folgende Ausgabe ausgegeben:
Hello
what?
single quotes won't close it?'
but double quotes will! "
Auf diese Weise können Sie eine Zeichenfolge erstellen, die sich über mehrere Zeilen erstreckt, ohne das Zeilenumbruchzeichen „\n“ explizit eingeben zu müssen.
Zusatzinformation
Dass bei dieser Eingabeaufforderung ein ">" ausgegeben wird und nicht etwas anderes, wird durch die $PS2
Umgebungsvariable festgelegt. Wenn Sie $PS2
etwas anderes festlegen, wird Ihnen das als Eingabeaufforderung angezeigt.
Eine weitere Möglichkeit, diese Eingabeaufforderung anzuzeigen, besteht darin, am Ende der Zeile einen Backslash ("\") einzufügen. Dadurch werden im Grunde zwei Zeilen miteinander verkettet, beispielsweise die folgenden beiden Zeilen:
eric@Ubuntu: /home/eric$echo "Hello \
>There my friend"
würde als verarbeitet eric@Ubuntu: /home/eric$echo "Hello There my friend"
und einfach ausgegeben Hello There my friend
.
Beide Methoden dienen dazu, Ihren Code lesbarer zu formatieren. Die ersten Male, wenn Sie es sehen, kann es frustrierend sein, da Sie nicht wirklich wissen, was die Ursache ist, aber wenn Sie versuchen, längeren Code oder die Ausgabe des Codes lesbar zu machen, sind beide Methoden praktisch.
Antwort2
Eine Pipe kann auch verwendet werden, um Informationen an eine Datei anzuhängen. Wenn Sie beispielsweise Folgendes in das Terminal eingeben,
echo "Test Line" > test.txt
Dadurch wird der Inhalt der Datei test.txt auf „Testzeile“ mit einem Zeilenumbruchzeichen am Ende gesetzt. Wenn die Datei noch nicht vorhanden ist, wird sie erstellt.
echo "Test Line" >> test.txt
Dadurch werden „Testzeile“ und ein Zeilenumbruchzeichen am Ende der Datei test.txt hinzugefügt, sofern diese vorhanden ist. Wenn sie nicht vorhanden ist, wird die Datei leer erstellt und diese Zeile hinzugefügt.
Antwort3
>
bedeutet die Umleitung des Streams zu
>>
bedeutet Umleitung zu aber am Ende
es gilt nur fürstdout
gilt 2>
fürstderr, offensichtlich 1>
ist die Verwendung dasselbe wie>
stdoutist die normale Programmausgabe,stderrist die Fehlerausgabe für Programme. Es gibt also zwei Ausgaben. Sie können die beiden Ausgaben umleiten mit&>
mehr Infos hierhttp://www.tldp.org/LDP/abs/html/io-redirection.html