سؤال هل هناك اختصار ل mkdir foo وعلى الفور cd في ذلك؟


هذا شيء أقوم به بشكل متكرر

$ 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" بدلاً من "&&"؟ بهذه الطريقة ينجح "cd" حتى لو فشل "mkdir" ، ولا تحتاج إلى السقالات الموجودة بالفعل. (2) كما هو مكتوب لن تعمل وظيفتك (لمطالبتك باسم الدليل). تحتاج إلى وضع ذلك في جملة "if" منفصلة من اختبار الوجود (الموجود حاليًا في "elif"). - quack quixote


الأجوبة:


أنا لا يوجد لينكس / باش الخبراء ، ولكن حاول وضع هذا في حياتك .bashrc.

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

PS شكرا لدينيس لاستخدامه 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 $_

إنها أسهل قليلاً من استخدام && ، والجمع بين إجابات ququeote's و kzh's.


10
2018-03-14 02:09



وجهة نظر && هل هذا cd لن يتم تنفيذها إذا كان mkdir فشل الأمر - slhck
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