Un altro approccio è quello di creare il proprio comando dedicato a questo scopo. Questo può essere fatto tramite una funzione che potrebbe apparire come:
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
Dove: (1) mv-special è il nome della funzione; (2) le variabili $1e $2sono argomenti nella funzione che verranno utilizzati dai comandi mve cd; (3) $(echo $2-) aggiunge un carattere jolly alla fine della stringa in var $2e corregge il comportamento di dirnamese la variabile $2contiene solo percorso; (4) $(dirname $(echo $2-)) filtrerà solo il percorso da $2.
Secondo questa risposta la funzione potrebbe apparire come:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
Dove: ${2%/*}filtra solo il percorso da $2.
Per essere disponibile come comando, è necessario esportare questa funzione :
$ export -f mv-special
Uso:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
o:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Si prega di prestare attenzione a che - per entrambe le varianti - il secondo argomento ( $2) deve terminare con nomefile o barra ( /).
Per essere permanentemente disponibili per il nostro nuovo comando, la definizione della funzione e il comando di esportazione devono essere aggiunti a ~/.bashrc:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
o:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special

È possibile eseguire un comando personalizzato e tramite il file di script eseguibile inserito ~/bino inserito in /usr/sbin: Come posso creare un comando di terminale personalizzato (per eseguire uno script)? Ma ad essere sincero, ho dovuto affrontare un problema con il comportamento di cdquesto scenario.