J'ai récemment découvert une excellente astuce pour manipuler des fichiers sous Linux grâce au "Brace Expansion".
A la clé : un gain de temps important et une marge d'erreur réduite car vous ne tapez pas deux fois le chemin d'un fichier/dossier.
Plutôt que de faire ceci :
[shell]cp /var/www/fichier.html /var/www/fichier.html.bak[/shell]
Faites :
cp /var/www/fichier.html{,.bak}
Cette syntaxe est simple à comprendre, la chaîne précédant les accolade est suffixé du contenu de l'accolade.
Par exemple "a{d,c,b}e" devient "ade ace abe".
Voici ce que dit la documentation officielle :
Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to pathname expan-
sion, but the filenames generated need not exist. Patterns to be brace expanded take the form of an optional preamble,
followed by either a series of comma-separated strings or a sequence expression between a pair of braces, followed by an
optional postscript. The preamble is prefixed to each string contained within the braces, and the postscript is then
appended to each resulting string, expanding left to right.
Je l'ai ajouté à billet sur les commandes linux qui vous feront gagner du temps.
A garder sous le coude car les possibilités sont aussi intéressantes dans le cadre de scripting.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
5 commentaires
J'aime bien ce genre d'article 🙂
Une autre utilisation des expressions est de manipuler un ensemble de fichiers séquencés :
rm /var/log/apache2/access.log.{35..40}.gz (effacera les fichiers access.log.35.gz, 36, 37, etc.. jusqu'à 40 inclus)
Fonctionne également avec les lettres {b..m} => b c d e f g h i j k l m
@pyrou: Tu as bien fait d'ajouter un exemple car j'avais peur de rendre le billet trop "complexe" en parlant du reste 🙂
C'est très bien que de trouver des articles dans ce genre qui viennent nous faciliter la vie 😉
Merci pour l'astuce 🙂