Outra abordagem é criar seu próprio comando dedicado para essa finalidade. Isso pode ser feito através da função , que pode ser semelhante a:
$ function mv-special { mv ; cd $(dirname $(echo -)); }
Onde: (1) mv-special
é o nome da função; (2) as variáveis
e
são argumentos na função que serão usados pelos comandos mv
e cd
; (3) $(echo -)
adiciona um caractere de wildcat ao final da string em var
e corrige o comportamento de dirname
se a variável
contiver somente caminho; (4) $(dirname $(echo -))
filtrará apenas o caminho de
.
De acordo com esta resposta , a função poderia ser semelhante a:
$ function mv-special { mv ; cd ${2%/*}; }
Onde: ${2%/*}
filtrará apenas o caminho de
.
Para estar disponível como um comando, esta função deve ser exportada :
$ export -f mv-special
Uso:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
ou:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Por favor, preste atenção a isso - para ambas as variantes - o segundo argumento (
) deve terminar com nome de arquivo ou barra ( /
).
Para ser nosso novo comando permanentemente disponível, a definição da função e o comando de exportação devem ser anexados a ~/.bashrc
:
# My custom 'mv-special' command:
function mv-special { mv ; cd $(dirname $(echo -)); }
export -f mv-special
ou:
# My custom 'mv-special' command:
function mv-special { mv ; cd ${2%/*}; }
export -f mv-special
Comando customizado pode ser feito e via arquivo de script executável que é colocado em ~/bin
ou em /usr/sbin
: Como posso criar um comando terminal personalizado (para executar um script)? Mas, para ser honesto, fui confrontado com um problemas com o comportamento de cd
neste cenário.