Si je suis en ligne ~/blob
et que j'ai un fichier en~/blob/a_long_directory_name/c/x.x
je peux taper
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
Existe-t-il un raccourci permettant de taper quelque chose de plus court qui utilise le chemin du répertoire dans le premier paramètre (mais pas mon répertoire actuel), par exemple
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
où quelque chose comme $same_dir
pointerait vers le dir de param 1
la source
even_more
chemin relatif ...Avec bash, vous pouvez utiliser l' expansion d'accolade
la source
Vous pouvez utiliser les capacités de substitution de texte de votre shell. Dans
bash
, vous pouvez utiliser une bête comme:Pour le décomposer:
!#
est la ligne actuelle tapée jusqu'à présent:$
demande de choisir le dernier mot (remplacer par un chiffren
pour choisirn
le mot) de la chaîne considérée (!#
dans ce cas). Le dernier mot de la ligne tapée jusqu'à présent serait le mot précédent.:gs^xx^yy
fait uneg
substitution textuelle globale ( )s
sur le mot résultant, en remplaçant 'xx' par 'yy'.^
n'est qu'un délimiteur pour las
commande permettant d'utiliser/
dans vos modèles.Cette méthode est légèrement plus générale car elle vous permet de remplacer n'importe quelle partie du chemin ('xx') par n'importe quel autre mot ('yy').
Enfin, comme pour toute manipulation d'historique, il est bon d'avoir les options de shell appropriées définies (par exemple dans
~/.bashrc
). Dans ce casaffichera la ligne modifiée une fois que vous aurez appuyé sur Retour, vous pourrez donc la modifier et vérifier les erreurs.
Pourquoi vous utiliseriez une construction comme ça, je ne suis pas sûr, mais cela fonctionne dans ce cas.
la source
c/x.x
enevenmore/y.y
gardant le préfixe de chemin d'origine.$PWD
). Bien sûr, ce n'est peut-être pas le plus élégant, mais cela indique que le shell a des substitutions textuelles et des désignateurs de mots, que certains utilisateurs pourraient toujours trouver utiles pour la recherche.