Deponun yerel adını girerseniz, $ _ kullanarak gerçekten kolaydır :
git clone git@github.com:npm/npm.git npm-local-dir && cd $_
Fakat uzun isimleri tekrar yazmak istemiyorsanız, biraz çirkin fakat sed ile yapılabilir:
git clone git@github.com:pckujawa/pattern-rec.git &&
cd `echo $_ | sed -n -e 's/^.*\/\([^.]*\)\(.git\)*/\1/p'`
EDIT: Eh, ben vecize için Manav teşekkür ederim (aşağıdaki yorum)
git clone foo/bar && cd !$:t
ancak zsh iş yapmaz (hakkında bir şey zsh açılımları nasıl yaptığını girdi olarak ilk komutu tedavi etmek değil bunu neden !$
). Ne olduğuna bakmak zorundaydım !$:t
( Bash Shell'de ilerlemek | $ {me: -whatever} ). !$
önceki komutun son kısmını alır ve :t
"Baştaki tüm dosya adı bileşenlerini kaldır, kuyruğunu bırakarak" olur. İyi bilgi, ancak keşke zsh ile çalışabilseydim keşke ( noglob
başarı olmadan denedim ).
DÜZENLEME: ( sed
veya !$:t
benim için zsh ile çalışmazsa) kullanmak yerine, iki seçenek daha buldum (biri https://unix.stackexchange.com/users/5685/frederik-deweerdt'in https ile verdiği cevabı uyarladım) : //unix.stackexchange.com/users/129926/henrik- 'nin yorumu):
git clone git@github.com:npm/npm.git && cd $(basename $_ .git)
veya
git clone git@github.com:npm/npm.git && cd ${${_%%.git*}##*/}
~/.bashrc
dosyaya (örneğin) yazmaktan bahsetmem gerekiyor ve benim için en azından işe yaramadı. hat:/usr/bin/git "$@" 2>&1 | tee $tmp