Você pode adicionar isso em seu arquivo .bashrc ou .bash_aliases (ou equivalente se o seu shell não for bash
):
mvcd () {
mv -- "$1" "$2" &&
cd -P -- "$2"
}
Em seguida, reinicie o seu shell, então você pode usar a função da seguinte forma:
mvcd foo bar
Isso pressupõe que $2
não é um diretório existente, caso contrário, mv
moverá $1
para ao invés de para (veja o -T
opção do GNU mv
para proteger contra isso).
--
marca o final das opções. mv "$1" "$2"
seria mv "$option_or_source" "$option_or_argument_to_first_option_or_destination"
. mv -- "$1" "$2"
garante que $1
e $2
não sejam tratados como opções, mesmo se o nome deles começar com -
, portanto, sempre será tratado como mv -- "$source" "$destination"
. Geralmente, você deseja usar --
sempre que um comando receber um argumento arbitrário.
-P
(para a passagem de diretório físico ) é para impedir o processamento especial que o cd
embutido de shells POSIX faz por padrão com ..
caminho componentes para que ele trate o conteúdo de $2
o mesmo que mv
. Sem isso, em cdmv foo ../bar
, cd
poderia fazer o cd em um diretório bar
diferente daquele mv
renamed foo
as.
Se você definiu $CDPATH
(ou estava no ambiente quando o shell foi iniciado), também seria necessário desativá-lo para essa invocação de cd
:
mvcd () {
mv -- "$1" "$2" &&
CDPATH= cd -P -- "$2"
}
Alguns problemas extras de caso de canto permanecem: -
(e em alguns shells -2
, +3
) são tratados especialmente mesmo após --
. Se você quiser renomear foo
para -
, use mvcd foo ./-
em vez de . mvcd foo -