Dupliquer possible:
réutiliser du texte sur une commande bash
Si je veux renommer un fichier sur quelques répertoires, comment éviter de répéter le chemin?
Par exemple:
mv path/to/old_filename.txt path/to/new_filename.txt
Je me demande s'il y a un moyen de faire cela:
mv path/to/old_filename.txt (?)new_filename.txt
Où (?)
serait un moyen de dire "dans le même répertoire."
Vous pouvez utiliser l’extension d’attelle:
mv path/to/{old_filename.txt,new_filename.txt}
Voici un lien vers le guide GNU sur le développement d'accolades dans le shell bash, qui définit une liste de substituts et indique à bash de répéter le paramètre en utilisant un substitut différent chaque fois qu'il se répète.
Par exemple,
sera étendu à
Le seul inconvénient est que les répétitions étendues doivent pouvoir se suivre en tant qu'arguments du programme cible.
la source
mv path/to/{old,new}_filename.txt
. Cela facilite également l’inversion ou d’autres types de répétition proche de la commande. J'ai souvent fait, par exemplemv /etc/X11/xorg.conf{,.backup}
, être capable d'inverser le processus par le simple changementmv /etc/X11/xorg.conf{.backup,}
.La réponse de Darth ci-dessus est intelligente, mais si vous souhaitez utiliser une approche avec
cd
, vous pouvez également envisager d'utiliser un sous-shell:Comme le changement de répertoire a lieu dans le sous-shell, vous ne changerez pas de répertoire dans votre shell interactif.
la source
old_filename.txt
.Une autre alternative utile, si vous allez effectuer plusieurs commandes dans le répertoire, est la suivante:
la source
J'aime la réponse de @ Darth . Voici une alternative:
cd path/to && mv oldfile newfile && cd -
la source
mv
échec (par exemple, sans autorisation), vous resterez dans lepath/to
répertoire. Vous pouvez essayercd path/to && mv oldfile newfile ; cd -
de vous assurer que le programmecd -
est toujours exécuté, sauf sicd path/to
(aucune autorisation) échoue, vous continuerez à vous exécutercd -
et à accéder au répertoire précédent non souhaité. mlc (+1) la réponse du sous-shell est meilleure. Je suppose quecd . && cd path/to && mv oldfile newfile ; cd -
cela marcherait 99,9% du temps (aveccd .
un échec seulement si vous ou vos autorisations de répertoires actuelles changeaient; et dans ce cas, passer à un