सवाल क्या mkdir foo के लिए शॉर्टकट है और तुरंत इसमें सीडी है?


यह वह है जो मैं अक्सर करता हूं

$ mkdir foo
$ cd foo

यह एक कमांड के रूप में काम करता है, लेकिन यह अधिक कीस्ट्रोक है और कोई समय बचाता है।

$ mkdir foo && cd foo

क्या इसके लिए शॉर्टकट है?

संपादित करें

नीचे सहायता के उपयोग के साथ, यह सबसे सुंदर जवाब प्रतीत होता है।

# ~/.bashrc
function mkcd {
  if [ ! -n "$1" ]; then
    echo "Enter a directory name"
  elif [ -d $1 ]; then
    echo "\`$1' already exists"
  else
    mkdir $1 && cd $1
  fi
}

82
2018-06-15 14:22


मूल


आप फ़ंक्शन का नाम बदल सकते हैं mkdir यदि तुम प्रयोग करते हो command mkdir $1 बस के बजाय mkdir $1 समारोह शरीर में। - Andy
(1) "&&" के बजाय बस "mkdir $ 1; cd $ 1" क्यों नहीं? इस तरह "सीडी" सफल होता है भले ही "mkdir" विफल हो जाता है, और आपको पहले से मौजूद-मौजूद मचान की आवश्यकता नहीं है। (2) जैसा लिखा है कि आपका फ़ंक्शन काम नहीं करेगा (आपको निर्देशिका नाम के लिए संकेत देने के लिए)। आपको इसे अस्तित्व परीक्षण से अलग "अगर" खंड में रखना होगा (वर्तमान में "elif" में)। - quack quixote


जवाब:


मैं कोई लिनक्स / बैश विशेषज्ञ नहीं हूं, लेकिन इसे अपने आप में डालने का प्रयास करें .bashrc

function mkdir
{
  command mkdir $1 && cd $1
}

पीएस का उपयोग करने के लिए डेनिस के लिए धन्यवाद command mkdir


40
2018-06-15 14:29



के बजाय `which mkdir`, महज प्रयोग करें command mkdir। - Dennis Williamson
धन्यवाद डेनिस। नीचे कुछ भी नहीं है man command - क्या आप मुझे संदर्भ में भेज सकते हैं? (मैं यह कर सकता हूं कि यह क्या करता है, लेकिन यह पूरी तरह से भुगतान करने का भुगतान करता है;) - Andy
command में वर्णित है का मैनुअल bash (जिसमें यह अंतर्निहित है; यह एक अलग कमांड नहीं है)। आप भी कोशिश कर सकते हैं help command। - grawity
यह zsh btw के लिए भी काम करता है - Florian Loch


bash, zsh गोले

यदि आप नहीं चाहते हैं कि कोई अन्य कार्य याद रखें और बाश को याद न करें:

$ mkdir /home/foo/doc/bar && cd $_

$_ (डॉलर अंडरस्कोर) bash कमांड चर में सबसे हालिया पैरामीटर है। तो यदि कोई उपयोगकर्ता कमांड लाइन पर निम्न टाइप करना था: echo foo bar && echo $_ baz, तो आउटपुट निम्नानुसार होगा:

foo bar
bar baz

fish खोल

मछली के खोल में, मैं निम्नलिखित टाइप करूंगा:

> mkdir / home / foo / doc / bar
> सीडी alt + ↑

ऊपर या नीचे तीर कुंजी के साथ संयुक्त alt कुंजी कमांड पैरामीटर इतिहास के माध्यम से चक्र होगा।


90
2017-08-12 11:26



यह काम करता है zsh भी। - Nabil Kadimi
क्या आप समझा सकते हैं कि $ _ क्या है? यहाँ नौसिखिया। - arg20


के लिये ओह-मेरी-zsh उपयोगकर्ताओं:
$ take 'directory_name' 

संदर्भ: https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet


16
2017-07-12 15:39



क्या आप इसे अधिक विस्तार से समझा सकते हैं? - bwDraco


व्हाट अबाउट:

$ mkdir newdirname; cd $_

यह quack quixote और kzh के उत्तरों को संयोजित करने, && का उपयोग करने से थोड़ा आसान है।


10
2018-03-14 02:09



के बिंदु && क्या वह cd अगर निष्पादित नहीं किया जाएगा mkdir आदेश विफल रहता है - slhck
@ एसएलएचके वास्तव में quixote का बिंदु था: सीडी अगर mkdir विफल रहता है (उदाहरण के लिए यदि यह पहले से मौजूद है, तो उपयोगकर्ता को वास्तव में पथ पर सीडी करने के लिए दूसरा आदेश लिखने के लिए मजबूर कर रहा है)। हालांकि, इस जवाब के मुताबिक, यह सरलता के लिए नहीं है: && से अधिक जटिल नहीं है; - moala


आप इस तरह कुछ कोशिश कर सकते हैं:

#!/bin/sh
mkdir $1 && cd $1

इस स्क्रिप्ट को अपने पथ में मौजूद किसी स्थान पर सहेजें, उदाहरण के लिए, / usr / local / bin या ~ / bin (आपको यह अंतिम अपने / / .profile फ़ाइल में अपने पथ में रखना होगा)। फिर आप इसे आसानी से कॉल कर सकते हैं।


7
2018-06-15 14:30



यह कैसे काम कर सकता है? ऐसा लगता है केवल cd के निष्पादन के संदर्भ में ~/bin/mkcd लिपि, स्क्रिप्ट के कॉलर नहीं। - Erik Allik


$echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
$mkcd < pathtofolder/foldername >

5
2017-09-19 06:01





वांछित परिणाम के आधार पर यदि निर्देशिका पहले से मौजूद है।

विफल अगर निर्देशिका पहले से मौजूद है

mkcd() {
    mkdir $1 && cd $1
}

परवाह किए बिना निर्देशिका बदलें

mkcd() {
    mkdir $1 ; cd $1
}

प्रयोग mkcd कुछ / पथ / से / मेरे / डीआईआर


0
2017-10-13 11:51





मैंने पाया कि नीचे दिया गया कार्य केवल एक निर्देशिका बना सकता है, अगर मैं एक ही समय में उपनिर्देशिका बनाना चाहता हूं, तो यह काम नहीं करता है:

function mkdir
{
  command mkdir $1 && cd $1
}

तो मैंने इसे बदल दिया और अब यह बहुत अच्छा काम कर रहा है!

function mkcd
{
  command mkdir -pv $1 && cd $1 && echo "Now in `pwd`"
}

0
2017-12-20 05:32





यहां एक साधारण कार्य है जिसे मैंने रखा है ~/.config/fish/config.fish फ़ाइल जो इस कार्य को पूरा करती है:

function mkcd
    mkdir -pv $argv;
    cd $argv;
end

-pv टैग उप-निर्देशिकाओं के साथ निर्देशिकाओं के निर्माण के लिए अनुमति देता है।


0
2017-07-23 12:30