Mon code pour créer un script exécutable
touch script.sh && echo "echo 'Hello World'" > script.sh && Sudo chmod +x script.sh
Vous pouvez omettre la commande touch
au complet et il n’est pas nécessaire d’utiliser Sudo
name__. Pour raccourcir davantage la ligne de commande, vous pouvez utiliser bash
History Expansion pour enregistrer le nom de fichier une deuxième fois et omettre les espaces inutiles:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
History Expansion remplace !#:3
par le quatrième mot de la ligne de commande actuelle, qui dans votre cas est le nom de fichier script.sh
. Bien sûr, cela doit être adapté si vous modifiez la première commande, par exemple:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Notez qu'un script valide a besoin d'un Shebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Si vous avez plus souvent besoin de cette chaîne de commandes, je vous recommande de définir une fonction , il vous suffira de taper le nom de la fonction. L’utilisation d’une variable contenant le nom de fichier:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Si votre nom de fichier contient des caractères spéciaux, n'oubliez pas de citez-les correctement .
La commande install
(partie de GNU coreutils avec cp
, mv
, rm
, etc.) peut copier un fichier tout en définissant sa propriété et ses autorisations et en créant les répertoires parent si nécessaire. Par défaut, le nouveau fichier sera exécutable. Il ne comprend pas "-
" mais /dev/stdin
peut être utilisé à la place:
install /dev/stdin script.sh <<< "echo Hello World"
Ce qui précède utilise un " here string " pour fournir le texte sur stdin, qui est légèrement plus court que le rediriger en. Les arguments de echo
n’ont pas besoin de guillemets, à moins qu’ils ne contiennent des caractères ayant une signification spéciale.
Je préfère utiliser cat
pour des tâches comme celle-ci:
cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'
EnterCtrl+D
Vous pouvez également omettre l'intégralité du chmod et utiliser umask avant l'écho. Devrait vous sauver quelques octets. Shebang est facultatif tant que vous utilisez des commandes comprises par tous les Shell (principalement Bourne et C).