Sous Linux, j'ai tendance à créer mes propres scripts pour essayer d'automatiser le plus de choses possibles. Pour ce faire, j'avais l'habitude de créer un nouveau fichier dans / usr / local / bin
, de le rendre exécutable puis d'écrire mon script dans ce fichier
touch /usr/local/bin/my-script
chmod +x /usr/local/bin/my-script
vim /usr/local/bin/my-script
Quand vim se lance j'ai tendance à commencer mon script un peu comme ça :
#!/bin/bash
echo hello
Le plus souvent j'ustilise /bin/bash comme interpréteur et à chaque fois je dois ajouter tout le contenu de shebang à la première ligne.
Automatiser l'automatisation
Pour éviter ces étapes, j'ai créé un nouveau script que j'ai appelé localScript
:
#!/bin/bash
if [[ -z $1 ]]; then
echo "You need to set the name of the script you want to edit/create"
exit 0
fi
SCRIPT_PATH="/usr/local/bin/${1}"
INTERPRETER=bash
if [[ ! -f $SCRIPT_PATH ]]; then
if [[ ! -z $2 ]]; then
INTERPRETER=$2
fi
echo "#!/usr/bin/env $INTERPRETER" > $SCRIPT_PATH
/bin/chmod +x $SCRIPT_PATH
fi
/usr/bin/vim $SCRIPT_PATH
Tout d'abord, je veux m'assurer que l'utilisateur entre un argument lors de l'appel de cette commande. S'il ne le fait pas, il recevra un message et le script s'arrêtera.
Ensuite, j'ai défini 2 variables, SCRIPT_PATH
etINTERPRETER
Le premier est pour le chemin dans lequel créer mon fichier de script et est basé sur le premier argument lorsque la commande est appelée. Le second est l'interpréteur que je définirai dans le shebang
de mon script.
Si le fichier n'existe pas, je veux créer un nouveau fichier et insérer la première ligne le bon interpréteur correct, puis le rendre exécutable.
Je vais ensuite éditer le fichier avec Vim.
Le résultat :
➜ ~ localScript bash-script
// Vim opens the script, when I close wim without adding anything :
➜ ~ cat /usr/local/bin/bash-script
#!/bin/bash
➜ ~ localScript python-script python3
➜ ~ cat /usr/local/bin/python-script
#!/usr/bin/env python3
Cela rendra la création et l'édition de commandes personnalisées un peu plus rapides et un peu plus faciles :)
Dennis de Best
Commentaires