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í
done
powhile
nebofor
- chybějící
fi
zaif
- chybějící
esac
pocase
- 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