Uso de Sed: agregue shebang que falta en la primera línea del script

Uso de Sed: agregue shebang que falta en la primera línea del script

Tengo un *.shguión al que le falta el tinglado de la primera línea. ¿Puedo arreglarlo con sed?

Respuesta1

Inserte ( i) el shebang con sedla operación en su lugar:

sed -i '1 i #!/bin/bash' file.sh

Con copia de seguridad del archivo original con una .bakextensión:

sed -i.bak '1 i #!/bin/bash' file.sh

Reemplácelo #!/bin/bashcon el shebang real que desee.

Ejemplo:

% cat foo.sh
echo foobar

% sed '1 i #!/bin/bash' foo.sh 
#!/bin/bash
echo foobar

Respuesta2

Usando bashy cat(no en el lugar):

cat <(echo '#!/bin/sh') foo.sh

O in situ usando GNU awk >= 4.1:

awk -i inplace 'BEGINFILE{print "#!/bin/sh"}{print}' foo.sh

información relacionada