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 -