To, co jste zadali, je zpětné zaškrtnutí - je to začátek instrukce pro bash, aby vyhodnotil, co napíšete jako příkaz. > se zobrazí , což znamená, že stále zadáváte příkaz na dalším řádku.
Pokud zavřete zaškrtávací políčko, zjistíte, že se spustí celý příkaz. Např.
~$ cd `
> echo /var`
/var$
JohnCova odpověď již vysvětluje zpětný tah. Ale co vás také zajímá, je > výzva. Toto je výzva k pokračování a nespouští se pouze zpětným zaškrtnutím, ale vždy když váš shell jasně ví, že jste neskončili se zadáním příkazu. Nejjednodušším příkladem je vložení explicitního pokračování řádku \ na konci vstupního řádku (což pomáhá rozdělit dlouhý vstup):
$ echo \
> hallo
Všimněte si, že stejně jako PS1 ovládá vzhled příkazového řádku, můžete také nastavit PS2 pro změnu výzvy k pokračování, např.
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Existuje mnoho důvodů pro pokračování. Jedno zpětné zaškrtnutí je neúplné, ale můžete také zadat něco jako
ls -l `which cp`
v jednom řádku (postranní poznámka:Doporučuje se použít $( a ) místo toho, protože závorky dávají jasně najevo, kde expanze začíná a končí, zatímco jednotlivé zpětné značky znesnadňují zjištění, kde chybí. A hnízdění...). Další možné důvody pro výzvu k pokračování:
- chybějící
donepowhilenebofor - chybějící
fizaif - chybějící
esacpocase - chybějící koncová závorka, např. v podsložkách
(cd $HOME; cat .bashrc) - chybějící příkaz po propojení
|stejně jako podmíněné spuštění||a&&(nikoli&i když, protože to znamená, že příkaz běží na pozadí) - chybějící závěrečná uvozovka (
'nebo")
Je zvláštní, že chybí složená závorka } po rozšíření proměnné ${ také způsobí výzvu k pokračování, ale selže kvůli vložené mezerě:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
Znamená to, že váš příkaz ještě není dokončen. Ve skutečnosti je to zpětné zaškrtnutí znaku ` , se používá k oddělování vloženého příkazu.
Příklad:
cd /tmp # Go to /tmp
pwd # Prints the current working directory
ls `pwd` # Lists the content of the current working directory