Quello che hai digitato è un apice inverso:è l'inizio di un'istruzione a bash per valutare ciò che digiti come comando. Il >
viene visualizzato per indicare che si sta ancora immettendo il comando nella riga successiva.
Se chiudi il backtick scoprirai che verrà eseguito l'intero comando. Ad esempio
~$ cd `
> echo /var`
/var$
La risposta di JohnC spiega già il backtick. Ma quello che ti stai anche chiedendo è il >
richiesta. Questo è un prompt di continuazione e non viene attivato solo da un apice inverso, ma sempre quando la tua shell sa chiaramente che non hai finito di inserire un comando. L'esempio più semplice è inserire una continuazione di riga esplicita \
alla fine di una riga di input (che aiuta a suddividere l'input lungo):
$ echo \
> hallo
Nota che proprio come PS1
controlla l'aspetto del prompt dei comandi, puoi anche impostare PS2
per modificare il prompt di continuazione, ad es.
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Ci sono molte ragioni per cui si verifica la continuazione. Un singolo apice inverso è incompleto, ma potresti anche inserire qualcosa come
ls -l `which cp`
in una singola riga (nota a margine:si consiglia di utilizzare $(
e )
invece, poiché le parentesi rendono ovvio dove inizia e finisce l'espansione, mentre i singoli apici inversi rendono più difficile vedere dove manca. E nidificazione...). Altre possibili ragioni per una richiesta di continuazione:
- un
done
mancante dopowhile
ofor
- un
fi
mancante dopo unif
- un
esac
mancante dopocase
- una parentesi di chiusura mancante, ad es. nelle subshell
(cd $HOME; cat .bashrc)
- un comando mancante dopo il piping
|
così come l'esecuzione condizionale||
e&&
(non&
però, dal momento che questo significa solo eseguire il comando in background) - virgoletta di chiusura mancante (
'
o"
)
Curiosamente, una parentesi graffa mancante }
dopo un'espansione variabile ${
provoca anche una richiesta di continuazione, ma fallirà a causa dello spazio inserito:
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
Significa che il tuo comando non è ancora completo. Infatti, il carattere backtick, `
, viene utilizzato per delimitare un comando in linea.
Esempio:
cd /tmp # Go to /tmp
pwd # Prints the current working directory
ls `pwd` # Lists the content of the current working directory