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 $1
e $2
sono argomenti nella funzione che verranno utilizzati dai comandi mv
e cd
; (3) $(echo $2-)
aggiunge un carattere jolly alla fine della stringa in var $2
e corregge il comportamento di dirname
se la variabile $2
contiene 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 ~/bin
o 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 cd
questo scenario.