Une autre approche consiste à créer votre propre commande dédiée à cet effet. Cela peut être fait via une fonction qui pourrait ressembler à ceci :
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
Où: (1) mv-special est le nom de la fonction; (2) les variables $1et $2sont des arguments dans la fonction qui seront utilisés par les commandes mvet cd; (3) $(echo $2-) ajoute un caractère générique à la fin de la chaîne dans var $2et corrige le comportement de dirnamesi la variable $2ne contient que le chemin; (4) $(dirname $(echo $2-)) filtrera uniquement le chemin depuis $2.
Selon cette réponse, la fonction pourrait ressembler à:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
Où: ${2%/*}filtrera uniquement le chemin depuis $2.
Pour être disponible en tant que commande, cette fonction doit être exportée :
$ export -f mv-special
Usage:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
ou:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Veuillez faire attention à cela - pour les deux variantes - le deuxième argument ( $2) doit se terminer par filename ou slash ( /).
Pour être notre nouvelle commande disponible en permanence, la définition de la fonction et la commande d'exportation doivent être ajoutées à ~/.bashrc:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
ou:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special

Une commande personnalisée peut être effectuée et via un fichier de script exécutable qui est placé dans ~/binou dans /usr/sbin: Comment puis-je créer une commande de terminal personnalisée (pour exécuter un script)? Mais pour être honnête, j'ai eu un problème avec le comportement de cddans ce scénario.