У меня есть *.sh
скрипт, в котором отсутствует шебанг из первой строки. Можно ли это исправить с помощью sed
?
решение1
Вставьте ( i
) шебанг с sed
, на месте операции:
sed -i '1 i #!/bin/bash' file.sh
С резервным копированием исходного файла с .bak
расширением:
sed -i.bak '1 i #!/bin/bash' file.sh
Замените #!/bin/bash
на реальный шебанг, который вам нужен.
Пример:
% cat foo.sh
echo foobar
% sed '1 i #!/bin/bash' foo.sh
#!/bin/bash
echo foobar
решение2
Используя bash
и cat
(не на месте):
cat <(echo '#!/bin/sh') foo.sh
Или на месте с использованием GNU awk >= 4.1:
awk -i inplace 'BEGINFILE{print "#!/bin/sh"}{print}' foo.sh