Eu tenho um *.sh
script 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 .bak
extensão:
sed -i.bak '1 i #!/bin/bash' file.sh
Substitua #!/bin/bash
pelo shebang real que você deseja.
Exemplo:
% cat foo.sh
echo foobar
% sed '1 i #!/bin/bash' foo.sh
#!/bin/bash
echo foobar
Responder2
Usando bash
e 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