Meu código para criar um script executável
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Meu código para criar um script executável
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Respostas:
Você pode deixar de fora todo o touchcomando e não há necessidade de usar sudo. Para reduzir ainda mais a linha de comando, você pode usar a bashExpansão do Histórico para salvar o nome do arquivo pela segunda vez e omitir espaços desnecessários:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
A expansão do histórico substitui !#:3a quarta palavra da linha de comando atual, que no seu caso é o nome do arquivo script.sh. É claro que isso precisa ser adaptado caso você modifique o primeiro comando, por exemplo:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Observe que um script válido precisa de um shebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Se você precisar dessa cadeia de comandos com mais frequência, recomendo definir uma função , dessa forma, basta digitar o nome da função. Um modo igualmente adaptável - embora mais longo - é o uso de uma variável que contém o nome do arquivo:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Se o seu nome de arquivo contiver caracteres especiais, não esqueça de citá-los corretamente .
O installcomando (parte do GNU Coreutils juntamente com cp, mv, rm, etc.) pode copiar um arquivo ao mesmo tempo, definindo sua propriedade e as permissões e criar diretórios pai, se necessário. Por padrão, ele tornará o novo arquivo executável. Ele não entende ' -', mas /dev/stdinpode ser usado:
install /dev/stdin script.sh <<< "echo Hello World"
O exemplo acima usa uma ' string aqui ' para fornecer o texto em stdin, que é um pouco menor do que o canal. Os argumentos para echonão precisar de citação, a menos que contenham caracteres com significado especial.
install <(echo echo Hello World) script.sh
Eu prefiro usar catpara tarefas como esta:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+D
Você também pode deixar de fora todo o chmod e usar umask antes do eco. Você deve economizar alguns bytes. Shebang é opcional, desde que você use comandos que são entendidos por todos os shell (bourne e C principalmente).
umaskpara definir bit executável por padrão ...
sudocom moderação. Adquirir o hábito de jogá-lo ao redor pode ser perigoso. Nesse caso, você possui o script criado para poder fazer o que quiser com as permissões, sem necessidade de sudo.