Mon code pour créer un script exécutable
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
command-line
scripts
Sham Fiorin
la source
la source
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.Réponses:
Vous pouvez omettre toute la
touch
commande et il n'est pas nécessaire de l'utilisersudo
. 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: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 fichierscript.sh
. Bien sûr, cela doit être adapté si vous modifiez la première commande, par exemple:Notez qu'un script valide a besoin d'un shebang :
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:
Si votre nom de fichier contient des caractères spéciaux, n'oubliez pas de les citer correctement .
la source
La
install
commande (partie de GNU coreutils aveccp
,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: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.la source
install <(echo echo Hello World) script.sh
Je préfère utiliser
cat
pour des tâches comme celle-ci:la source
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).
la source
umask
pour définir le bit exécutable par défaut ...