Ce que vous avez tapé est un backtick - c'est le début d'une instruction à bash pour évaluer ce que vous tapez en tant que commande. Le >
s'affiche pour indiquer que vous saisissez toujours la commande sur la ligne suivante.
Si vous fermez le backtick, vous constaterez que toute la commande s'exécutera. Par exemple
~$ cd `
> echo /var`
/var$
La réponse de JohnC explique déjà le backtick. Mais ce que vous vous demandez également, c'est le >
rapide. Il s'agit d'une invite de continuation, et elle n'est pas seulement déclenchée par un backtick, mais toujours lorsque votre shell sait clairement que vous n'avez pas fini d'entrer une commande. L'exemple le plus simple est de mettre une continuation de ligne explicite \
à la fin d'une ligne d'entrée (ce qui aide à diviser une longue entrée) :
$ echo \
> hallo
Notez que tout comme PS1
contrôle l'apparence de l'invite de commande, vous pouvez également définir PS2
pour changer l'invite de continuation, par exemple
$ export PS2="(cont.) "
$ echo \
(cont.) hallo
Il y a plusieurs raisons pour que la continuation se produise. Un seul backtick est incomplet, mais vous pouvez également saisir quelque chose comme
ls -l `which cp`
en une seule ligne (side-note :il est recommandé d'utiliser $(
et )
au lieu de cela, puisque les parenthèses rendent évident le début et la fin de l'expansion, tandis que les backticks simples rendent plus difficile de voir où il manque. Et la nidification...). Autres raisons possibles d'une invite de continuation :
- un
done
manquant aprèswhile
oufor
- un
fi
manquant après unif
- un
esac
manquant aprèscase
- une parenthèse fermante manquante, par ex. dans les sous-shells
(cd $HOME; cat .bashrc)
- une commande manquante après le raccordement
|
ainsi que l'exécution conditionnelle||
et&&
(pas&
cependant, puisque cela ne fait que lancer la commande en arrière-plan) - un guillemet fermant manquant (
'
ou"
)
Curieusement, une accolade manquante }
après une expansion variable ${
provoque également une invite de continuation, mais échouera en raison de l'espace inséré :
$ echo ${
> PS2}
bash: ${
PS2}: bad substitution
Cela signifie que votre commande n'est pas encore terminée. En fait, le caractère backtick, `
, est utilisé pour délimiter une commande en ligne.
Exemple :
cd /tmp # Go to /tmp
pwd # Prints the current working directory
ls `pwd` # Lists the content of the current working directory