Ne plus se faire avoir dans un alias Bash

Un alias Bash c’est facile à faire et très utile. Mais il faut être sûr de ce qu’il fait, pour éviter les déconvenues.

Prenons par exemple un alias de purge :

alias clean='rm -r ~/directory/to/clean/'

Vous pensez qu’il est tout a fait contrôlé ?

Imaginons que vous tapiez précipitamment votre commande et que vous dérapez sur une touche (par exemple *) cela procédera à l’instruction suivante :

# will proceed: rm -r ~/directory/to/clean/ *

Ce qui n’est vraiment pas top ;)

La solution la plus simple pour s’éviter ces petites frayeurs est de rajouter systématiquement le ; (semicolon) à la fin de votre commande, cela terminera l’instruction :

alias clean='rm -r ~/directory/to/clean/ ;'

5 réflexions au sujet de « Ne plus se faire avoir dans un alias Bash »

  1. Salute,

    Est-ce que tu as testé ? Je me suis mis en tête qu’il fallait que je teste ce petit tips et ça ne fonctionne pas :
    – L’exemple avec * fait peur et est sûrement parlant mais c’est un très mauvais exemple car bash répond qu’il ne trouve pas *
    – J’ai testé ton tips avec et sans ; ça ne change rien. Pour info j’ai remplacé * par un vrai dossier (/etc/apache2)
    – J’ai testé sur une VM de tests évidemment ;)

    Où as-tu croisé cette information ?

    Merci, Tcho !

  2. Hello, bien sur que je l’ai testé ;)

    Voila un exemple de déroulement (je créé pour l’exemple un dossier « test ») :

    user@ubuntu:~$ alias test-sans='rm -r ~/directory/to/clean/'
    user@ubuntu:~$ alias test-avec='rm -r ~/directory/to/clean/ ;'
    user@ubuntu:~$ mkdir test && cd test/
    user@ubuntu:~/test$ touch regular-file
    
    user@ubuntu:~/test$ test-avec *
    regular-file : commande introuvable
    user@ubuntu:~/test$ ls
    regular-file
    
    user@ubuntu:~/test$ test-sans *
    user@ubuntu:~/test$ ls -l
    total 0
    

    Le fichier « regular-file » se fait supprimer avec l’alias qui n’a pas le point virgule à la fin.
    C’est le fait de terminer l’instruction de la commande qui protège mon fichier de la suppression.

    • Bon :
      – Il te reste à corriger ton article ~/directory/to/clean/’ ; –> ~/directory/to/clean/ ;’
      – Pourquoi pas ~/directory/to/clean/;’ ?
      – Pourquoi mettre ~ dans l’exemple ~/directory/to/clean/ ?

      Merci, Tcho !

      • Il te reste à corriger ton article ~/directory/to/clean/’ ; –> ~/directory/to/clean/ ;’
        Raaaaaah !!! Merci, c’est vraiment trop bête de se tromper dans l’article !

        Pourquoi pas ~/directory/to/clean/;’ ?
        Ça marchera tout autant, personnellement je préfère laisser de l’espace dans mes commandes ;)

        Pourquoi mettre ~ dans l’exemple ~/directory/to/clean/ ?
        Et pourquoi pas ;) comme c’est un exemple, le dossier « home » est toujours parlant.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *