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  

PATH="/usr/local/bin/${1}"
INTERPRETER=bash

if [[ ! -f $PATH ]]; then
    if [[ ! -z $2 ]]; then
        INTERPRETER=$2
    fi
    echo "#!/usr/bin/env $INTERPRETER" > $PATH
    /bin/chmod +x $PATH
fi

/usr/bin/vim $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, 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 :)