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 $1
et $2
sont des arguments dans la fonction qui seront utilisés par les commandes mv
et cd
; (3) $(echo $2-)
ajoute un caractère générique à la fin de la chaîne dans var $2
et corrige le comportement de dirname
si la variable $2
ne 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 ~/bin
ou 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 cd
dans ce scénario.