Was Sie eingegeben haben, ist ein Backtick - es ist der Beginn einer Anweisung, die Sie bashen müssen, um auszuwerten, was Sie als Befehl eingeben. Der >
wird angezeigt, um anzuzeigen, dass Sie den Befehl noch in der nächsten Zeile eingeben.
Wenn Sie das Backtick schließen, werden Sie feststellen, dass der gesamte Befehl ausgeführt wird. Z. B.
~$ cd `
> echo /var`
/var$
Die Antwort von JohnC erklärt bereits den Backtick. Aber worüber Sie sich auch wundern, ist die >
prompt. Dies ist eine Fortsetzungsaufforderung und wird nicht nur durch ein Backtick ausgelöst, sondern immer wenn Ihre Shell eindeutig weiß, dass Sie mit der Eingabe eines Befehls noch nicht fertig sind. Das einfachste Beispiel ist das Setzen einer expliziten Zeilenfortsetzung \
am Ende einer Eingabezeile (was beim Aufteilen langer Eingaben hilft):
$ echo \
> hallo
Beachten Sie das genauso wie PS1
steuert das Aussehen der Eingabeaufforderung, Sie können auch PS2
festlegen um die Fortsetzungsaufforderung zu ändern, z. B.
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Es gibt viele Gründe für die Fortsetzung. Ein einzelner Backtick ist unvollständig, aber Sie könnten auch so etwas wie
eingebenls -l `which cp`
in einer einzigen Zeile (Randbemerkung:Es wird empfohlen, $(
zu verwenden und )
Stattdessen machen die Klammern deutlich, wo die Erweiterung beginnt und endet, während einzelne Backticks es schwieriger machen, zu sehen, wo etwas fehlt. Und nisten...). Andere mögliche Gründe für eine Fortsetzungsaufforderung:
- ein fehlender
done
nachwhile
oderfor
- eine fehlende
fi
nach einemif
- ein fehlender
esac
nachcase
- eine fehlende schließende Klammer, z.B. in Subshells
(cd $HOME; cat .bashrc)
- ein fehlender Befehl nach dem Piping von
|
sowie bedingte Ausführung||
und&&
(nicht&
da das den Befehl nur im Hintergrund laufen lässt) - ein fehlendes schließendes Anführungszeichen (
'
oder"
)
Seltsamerweise eine fehlende Klammer }
nach einer Variablenerweiterung ${
verursacht auch eine Fortsetzungsaufforderung, wird aber aufgrund des eingefügten Leerzeichens fehlschlagen:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
Das bedeutet, dass Ihr Befehl noch nicht abgeschlossen ist. Tatsächlich das Zeichen Backtick, `
, wird verwendet, um einen Inline-Befehl abzugrenzen.
Beispiel:
cd /tmp # Go to /tmp
pwd # Prints the current working directory
ls `pwd` # Lists the content of the current working directory