Si proporciona el nombre local del repositorio, es realmente fácil usar $ _ :
git clone git@github.com:npm/npm.git npm-local-dir && cd $_
Pero si no desea volver a escribir nombres largos, es un poco feo pero factible con sed:
git clone git@github.com:pckujawa/pattern-rec.git &&
cd `echo $_ | sed -n -e 's/^.*\/\([^.]*\)\(.git\)*/\1/p'`
EDITAR: Bueno, iba a agradecer a Manav (comentario a continuación) por el breve
git clone foo/bar && cd !$:t
pero no funciona en zsh (algo acerca de cómo zsh hace expansiones hace que no trate el primer comando como entrada !$
). Tuve que buscar lo que !$:t
hizo ( Avanzando en Bash Shell | $ {me: -whatever} ). !$
toma la última parte del comando anterior y :t
"Eliminará todos los componentes principales del nombre de archivo, dejando la cola". Buena información, pero desearía poder hacerlo funcionar con zsh (lo intenté noglob
sin éxito).
EDITAR: en lugar de usar sed
o !$:t
(que no funciona en zsh, para mí de todos modos), encontré otras dos opciones (una adaptando la respuesta https://unix.stackexchange.com/users/5685/frederik-deweerdt con https : //unix.stackexchange.com/users/129926/henrik-n's comment):
git clone git@github.com:npm/npm.git && cd $(basename $_ .git)
o
git clone git@github.com:npm/npm.git && cd ${${_%%.git*}##*/}
~/.bashrc
archivo (por ejemplo) y para mí al menos no funcionó, necesitaba arreglarlo con el reemplazo del línea:/usr/bin/git "$@" 2>&1 | tee $tmp