Mon code pour créer un script exécutable
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Mon code pour créer un script exécutable
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Réponses:
Vous pouvez omettre toute la touch
commande et il n'est pas nécessaire de l'utiliser sudo
. Pour raccourcir davantage la ligne de commande, vous pouvez utiliser l' bash
extension d'historique pour enregistrer le nom de fichier la deuxième fois et omettre les espaces inutiles:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
L'expansion de l'historique 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 besoin de cette chaîne de commandes plus souvent, je recommande de définir une fonction , de cette façon, il vous suffit de taper le nom de la fonction. Une manière également adaptable - bien que plus longue - est 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 les citer correctement .
La install
commande (partie de GNU coreutils avec cp
, mv
, rm
, etc.) peuvent copier un fichier tout en établissant la propriété et les autorisations et la création de répertoires parents au besoin. Par défaut, il rendra le nouveau fichier 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 une " chaîne ici " pour fournir le texte sur stdin, qui est légèrement plus court que le piping. Les arguments echo
ne nécessitent pas de citation à moins qu'ils ne contiennent des caractères ayant une signification spéciale.
install <(echo echo Hello World) script.sh
Vous pouvez également laisser de côté le chmod entier et utiliser umask à la place avant l'écho. Devrait vous faire économiser quelques octets. Shebang est optionnel tant que vous utilisez des commandes comprises par tous les shell (bourne et C principalement).
umask
pour définir le bit exécutable par défaut ...
sudo
avec parcimonie. Prendre l'habitude de le jeter peut être dangereux. Dans ce cas, vous possédez le script que vous avez créé afin que vous puissiez faire ce que vous voulez avec les autorisations, aucun sudo n'est nécessaire.