Meu código para criar um script executável
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
command-line
scripts
Sham Fiorin
fonte
fonte
sudo
com 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.Respostas:
Você pode deixar de fora todo o
touch
comando e não há necessidade de usarsudo
. Para reduzir ainda mais a linha de comando, você pode usar abash
Expansão do Histórico para salvar o nome do arquivo pela segunda vez e omitir espaços desnecessários:A expansão do histórico substitui
!#:3
a quarta palavra da linha de comando atual, que no seu caso é o nome do arquivoscript.sh
. É claro que isso precisa ser adaptado caso você modifique o primeiro comando, por exemplo:Observe que um script válido precisa de um shebang :
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:
Se o seu nome de arquivo contiver caracteres especiais, não esqueça de citá-los corretamente .
fonte
O
install
comando (parte do GNU Coreutils juntamente comcp
,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/stdin
pode ser usado:O exemplo acima usa uma ' string aqui ' para fornecer o texto em stdin, que é um pouco menor do que o canal. Os argumentos para
echo
não precisar de citação, a menos que contenham caracteres com significado especial.fonte
install <(echo echo Hello World) script.sh
Eu prefiro usar
cat
para tarefas como esta:fonte
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).
fonte
umask
para definir bit executável por padrão ...