3 votes

Comment ajouter # Shebang dans la première ligne d'un fichier qui est un script créé automatiquement par un autre programme.

Je cherche une méthode pour ajouter un shebang #!/bin/csh -f à la première ligne de mon fichier, qui est en fait créé par un autre ensemble de programmes, puisque ce script est auto-créé, il devrait être exécuté à partir de bash, lorsque l'utilisateur clique sur un bouton dans mon outil. J'ai essayé d'utiliser sed mais cela n'a pas fonctionné.

sed ' 1 s/.*/\#!/bin/csh -f/' filename.

et awk

awk 'NR==1{printf "%s %s\n", $0, "#!/bin/csh -f"}' filename

Ces deux commandes renvoient les résultats suivants

/bin/csh is not an event.

Veuillez suggérer une meilleure méthode.

Dan

1voto

Xen2050 Points 13136

Essayez d'échapper au ! en utilisant \! au lieu d'un simple ! devrait donner de meilleurs résultats. Essayez donc :

sed '1 i\#\!\/bin\/csh -f' filename > out.txt

1voto

Hastur Points 17791

Alternatives à Awk

awk 'BEGIN{print "#!/bin/csh -f"} {print}' filename > out.sh

awk 'NR==1{print "#!/bin/csh -f"};{print}' filename > out.sh 

Variante de Xen2050 pour modifier le fichier à l'intérieur au lieu de le rediriger vers out.sh

 sed -i '1 i\#\!\/bin\/csh -f' filename

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X