Je viens de remarquer qu'il semble que le drapeau -e
n'existe pas pour la echo
commande dans mon shell sous Linux. Est-ce juste un paramètre foiré ou est-ce "normal"?
Du code comme exemple:
#!/bin/sh
echo -e "\e[3;12r\e[3H"
Tirages:
-e \e[3;12r\e[3H
Cela fonctionnait avant! Je suppose que certaines stty
commandes ont terriblement mal tourné et maintenant cela ne fonctionne plus. Quelqu'un a suggéré que mon sh
était en fait juste bash
.
shell
escape-characters
echo
BrainStone
la source
la source
echo
structure interne du/bin/sh
shell fournie par ledash
paquet sur Debian (un système d'exploitation qui peut avoir Linux ou FreeBSD comme noyau).Réponses:
Parce que vous avez utilisé
sh
, nonbash
, laecho
commande insh
n'a pas d'option-e
. Depuis lash
page de manuel:Et il n'a pas non
\e
plus:la source
sh
implémentations prises en chargeecho -e
, au moment de la compilation,bash
peuvent être informées de ne pas prendre en chargeecho -e
. C'est juste que ce sh particulier (probablementdash
) ne prend pas en charge-e
alors que ce particulier lebash
fait.-e
n'est pas POSIX (en fait, l'écho POSIX n'accepte généralement aucune option (bien qu'il soit autorisé à le prendre en charge-n
), voir ici ), et/bin/sh
sur votre système semble être un shell POSIX.-e
est une extension acceptée dans certains shells, mais vous ne devriez pas vous y fier, elle n'est pas portable. Idéalement, utilisezprintf
ou passez à l'utilisation d'un shell qui aecho -e
.Voir également les mises
\e
en garde dans les commentaires ci-dessous, qui devraient être remplacés par\033
.la source
sh
ne le reconnaît pas non\e
plus. Utilisation\033
Notez qu'à tout moment et dans presque n'importe quel shell, vous pouvez déterminer quel "écho" sera appelé en tapant
type echo
ouwhich echo
. C'est généralement un shell intégré. Cela dépend donc de l '"echo" installé et du shell que vous utilisez.la source
which echo
ne doit pas être utilisé, il ne vous dira probablement pas si vous utilisez une fonction intégrée, car ilwhich
s'agit généralement d'un binaire externe.type
est bon, cependant.type which
ouwhich which
). ;)