Je veux remplacer #Banner none
par Banner /etc/sshd_banner
qui se trouve dans /etc/sshd_config
. Si je cours
Sudo sed -i "s/#Banner none/Banner \/etc\/sshd_banner" /etc/sshd_config
Je reçois l'erreur suivante
sed: 1: "/ etc/sshd_config": modèle de remplacement non terminé
Des idées sur la façon de résoudre ce problème?
Essaye ça:
Sudo sed -i "" "s|#Banner none|Banner /etc/sshd_banner|" /etc/sshd_config
En changeant le délimiteur, vous n'avez pas besoin d'échapper au /
Votre message original a manqué un /
à la fin.
À partir du manuel OS X
-i extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension
is given, no backup will be saved. It is not recommended to give a zero-length extension when
in-place editing files, as you risk corruption or partial content in situations where disk
space is exhausted, etc.
zero-length
= ""
Trois problèmes avec votre commande:
/
final./
comme délimiteur, car ce caractère apparaît dans la chaîne que vous essayez de remplacer/substituer. Vous devez utiliser un caractère différent, tel qu'un caractère de canal, comme délimiteur.sed
fournie avec Mac OS X, l'indicateur -i
s'attend à un argument required <extension>
, ce que votre commande manque. Une chaîne vide (""
) doit suivre l'indicateur -i
si vous souhaitez modifier le fichier sur place avec cette version de sed
.En résumé, essayez
Sudo sed -i "" "s|#Banner none|Banner /etc/sshd_banner|" /etc/sshd_config
Essayez des guillemets simples. De plus, certains Seds exigent que vous vous échappiez du premier délimiteur si vous voulez utiliser autre chose que /
.
Sudo sed -i 's\:#Banner none:Banner :etc/sshd_banner:' /etc/sshd_config
Une autre chose est que #
est peut-être interprété comme un commentaire qui se poursuit jusqu'à la fin de la ligne.