Die Antwort von JohnC erklärt bereits das Backtick. Aber worüber Sie sich auch wundern, ist die >
Aufforderung. Dies ist eine Fortsetzungsaufforderung und wird nicht nur durch ein Backtick ausgelöst, sondern immer dann, wenn Ihre Shell eindeutig weiß, dass Sie noch keinen Befehl eingegeben haben . Am einfachsten ist es, eine explizite Zeilenfortsetzung \
am Ende einer Eingabezeile einzufügen (dies hilft, lange Eingaben aufzuteilen):
$ echo \
> hallo
Beachten Sie, dass Sie wie bei den PS1
Steuerelementen für das Erscheinungsbild der Eingabeaufforderung auch festlegen können PS2
, dass die Fortsetzung der Eingabeaufforderung geändert werden soll, z
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Es gibt viele Gründe für die Fortsetzung. Ein einzelner Backtick ist unvollständig, aber Sie können auch so etwas eingeben
ls -l `which cp`
in einer einzigen Zeile (Randnotiz: Es wird empfohlen, stattdessen $(
und zu )
verwenden, da die Klammern deutlich machen, wo die Erweiterung beginnt und endet, während einzelne Backticks es schwieriger machen, zu erkennen, wo sie fehlen. Und verschachteln ...). Andere mögliche Gründe für eine Fortsetzung der Aufforderung:
- ein fehlt
done
nach while
oderfor
- ein Vermisster
fi
nach einemif
- ein
esac
nachher fehltcase
- eine fehlende schließende Klammer, zB in Unterschalen
(cd $HOME; cat .bashrc)
- ein fehlender Befehl nach der Weiterleitung
|
sowie eine bedingte Ausführung ||
und &&
(nicht &
jedoch, da der Befehl nur im Hintergrund ausgeführt wird)
- ein fehlendes Schlusszitat (
'
oder "
)
Seltsamerweise führt eine fehlende geschweifte Klammer }
nach einer variablen Erweiterung ${
auch zu einer Fortführungsaufforderung, die jedoch aufgrund des eingegebenen Leerzeichens fehlschlägt:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution