Uso de Sed: Adicionar shebang ausente na primeira linha do script

Uso de Sed: Adicionar shebang ausente na primeira linha do script

Eu tenho um *.shscript que está faltando a parte da primeira linha. Posso consertar isso com sed?

Responder1

Insira ( i) o shebang com sed, na operação local:

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

Fazendo backup do arquivo original com uma .bakextensão:

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

Substitua #!/bin/bashpelo shebang real que você deseja.

Exemplo:

% cat foo.sh
echo foobar

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

Responder2

Usando bashe cat(não no local):

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

Ou no local usando GNU awk >= 4.1:

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

informação relacionada