यदि आप रेपो का स्थानीय नाम प्रदान करते हैं, तो $ _ का उपयोग करना वास्तव में आसान है :
git clone git@github.com:npm/npm.git npm-local-dir && cd $_
लेकिन अगर आप लंबे नामों को फिर से लिखना नहीं चाहते हैं, तो यह थोड़ा बदसूरत है, लेकिन सेड के साथ उल्लेखनीय है:
git clone git@github.com:pckujawa/pattern-rec.git &&
cd `echo $_ | sed -n -e 's/^.*\/\([^.]*\)\(.git\)*/\1/p'`
संपादित करें: ठीक है, मैं मनव (नीचे टिप्पणी) को धन्यवाद देने जा रहा था
git clone foo/bar && cd !$:t
लेकिन यह zsh में काम नहीं करता है (कुछ के बारे में zsh विस्तार कैसे करता है, यह इनपुट के रूप में पहले कमांड का इलाज नहीं करने का कारण बनता है !$
)। मुझे यह देखना था कि क्या !$:t
किया ( बैश शैल में अग्रिम | $ {me: -whatever} )। !$
पिछली कमांड के अंतिम भाग को पकड़ लेता है और :t
"पूंछ छोड़कर सभी अग्रणी फ़ाइल नाम घटकों को हटा देगा।" अच्छी जानकारी, लेकिन मेरी इच्छा है कि मैं इसे zsh के साथ काम करने के लिए प्राप्त कर सकूं (मैंने noglob
कोई सफलता नहीं मिलने की कोशिश की )।
EDIT: उपयोग करने के बजाय ( sed
या !$:t
जो मेरे लिए काम नहीं करता है, वैसे भी), मुझे दो अन्य विकल्प (एक आदत https://unix.stackexchange.com/users/5685/frederik-deweerdtt ) https के साथ उत्तर मिला। : //unix.stackexchange.com/users/129926/henrik-n की टिप्पणी):
git clone git@github.com:npm/npm.git && cd $(basename $_ .git)
या
git clone git@github.com:npm/npm.git && cd ${${_%%.git*}##*/}
~/.bashrc
फ़ाइल पर उस फ़ंक्शन को लिखने के लिए उल्लेख करना होगा (उदाहरण के लिए) और मेरे लिए कम से कम यह काम नहीं किया, मुझे इसे बदलने के साथ ठीक करने की आवश्यकता है पंक्ति:/usr/bin/git "$@" 2>&1 | tee $tmp