Je comprends ce qu'est l' extension du corset , mais je ne sais pas comment l'utiliser au mieux.
Quand l'utilisez vous?
S'il vous plaît, apprenez-moi quelques exemples pratiques et remarquables si vous avez votre propre astuce.
Je comprends ce qu'est l' extension du corset , mais je ne sais pas comment l'utiliser au mieux.
Quand l'utilisez vous?
S'il vous plaît, apprenez-moi quelques exemples pratiques et remarquables si vous avez votre propre astuce.
L'extension d'accolade est très utile si vous avez des noms de chemin longs. Je l'utilise comme un moyen rapide de sauvegarder un fichier :
cp /a/really/long/path/to/some/file.txt{,.bak}
va copier /a/really/long/path/to/some/file.txt
à/a/really/long/path/to/some/file.txt.bak
Vous pouvez également l'utiliser dans une séquence . Je l'ai déjà fait pour télécharger de nombreuses pages du Web:
wget http://domain.com/book/page{1..5}.html
ou
for i in {1..100}
do
#do something 100 times
done
program -f file1 -f file2 -f file3
, vous pouvez le faireprogram "-f file"{1..3}
program
reçoit trois mots:"-f file1" "-f file2" "-f file3"
, au lieu de 6:"-f" "file1" "-f" "file2" "-f" "file3"
.for
boucle est un peu inutile, car vous pouvez écrirefor ((i=1; i<=100; i++))
et c'est plus efficace.Le développement d'accolades est très utile lors de la création de grandes structures de répertoires:
Cela vous donnera
Vous pouvez même aller un peu plus loin et intégrer l’expansion d’attelle à son développement:
Cela vous donnera la même structure de répertoire que l'exemple ci-dessus.
la source
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
) ne sert à rien. Vous auriez pu faire ceci:mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
.subdir1
etsubdir2
dans un sens non littéral. Remplacersubdir1
parcat
etsubdir2
avecdog
par exemple.Je l'utilise quand je veux réduire la dactylographie:
Un autre exemple:
la source
Je l'utilise pour comparer la sortie de test réelle à la sortie de test souhaitée pendant le développement. Si le test n ° 41 échoue, il est facile de voir la différence entre la sortie de test (dans le fichier tests.output / 041) et la sortie souhaitée (dans le fichier tests.out / 041):
la source
Quelques cas fréquents pour moi sont:
Pour renommer:
ou
ou
(Bien que l'utilisation du contrôle de version pour les 2 dernières tâches soit moins compliquée.)
Pour comparer (déjà mentionné):
la source
Il existe plusieurs bonnes réponses ici, mais aucune d’entre elles ne mentionne le moment où il ne faut pas utiliser l’expansion par attelle. Comme les autres répondeurs, j'utilise assez souvent le développement d'accolade sur la ligne de commande. Je l'utilise également dans mes alias et fonctions, car je peux m'attendre à un shell intelligent.
Je ne pas l' utiliser dans mes scripts shell (sauf si il y a une autre raison pour laquelle les scripts doivent être bash ou zsh, bien que dans ces cas, il est préférable de passer à un langage de script « réel » comme
perl
oupython
). L’expansion de l’accolade n’est pas portable car elle n’est pas dans la norme du shell POSIX. Même si cela fonctionne dans vos/bin/sh
- Shebang scripts shell ed, il ne fonctionnera pas sur les systèmes avec plus dépouillées/bin/sh
coquilles (par exempledash
).Dans le cas d'une différence d'un chiffre, vous n'avez pas besoin d'expansion d'accolade; une classe de personnage suffira:
Bashisme:
Portable:
la source
file{1,2}
les extensions de fichiers seront toujours étenduesfile1 file2
, alorsfile[12]
que les noms de fichiers existants seront étendus: c'est-à-dire que, s'ilsfile1
existent maisfile2
ne le sont pas,file[12]
étendusfile1
uniquement. L’[]
extension est en réalité une version restreinte de l’?
extension (on les appelle des «extensions de noms de chemins»).