এমকিডির ফু এর শর্টকাট কি তাৎক্ষণিকভাবে এটিতে সিডি করা যেতে পারে?


89

এটি আমি ঘন ঘন কিছু করি

$ 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
}

1
আপনি কেবলমাত্র ফাংশন বডির পরিবর্তে mkdirব্যবহার করলে ফাংশনটির নতুন নামকরণ করতে পারেন । command mkdir $1mkdir $1
অ্যান্ডি

2
(1) কেন "&&" এর পরিবর্তে কেবল "এমকিডির $ 1; সিডি $ 1" নয়? "mkdir" ব্যর্থ হওয়া সত্ত্বেও "সিডি" সফল হয় এবং আপনার ইতিমধ্যে বিদ্যমান স্ক্যাফোোল্ডিংয়ের দরকার নেই। (২) লিখিত হিসাবে আপনার ফাংশনটি কাজ করবে না (আপনাকে ডিরেক্টরি নামের জন্য অনুরোধ জানাতে)। আপনাকে এটি অস্তিত্ব পরীক্ষা থেকে পৃথক "যদি" ধারাটিতে রাখতে হবে (বর্তমানে "এলিফ" রয়েছে)।
কোয়াকোট কোয়াসট

উত্তর:


45

আমি লিনাক্স / ব্যাশ বিশেষজ্ঞ নই, তবে এটি আপনার মধ্যে রাখার চেষ্টা করুন .bashrc

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

PS ব্যবহার করার জন্য ডেনিসকে ধন্যবাদ command mkdir


2
পরিবর্তে `which mkdir`, শুধু ব্যবহার করুন command mkdir
ডেনিস উইলিয়ামসন

1
ধন্যবাদ ডেনিস এর অধীনে কিছুই নেই man command- আপনি কি আমাকে একটি রেফারেন্সে পরিচালনা করতে পারেন? (এটি কী করে আমি তা নিয়ে কাজ করতে পারি তবে এটি পুরোপুরিভাবে প্রদান করে;)
অ্যান্ডি

2
commandএর ম্যানুয়ালটিতেbash বর্ণনা করা হয়েছে (এটি এটি একটি অন্তর্নির্মিত; এটি পৃথক কমান্ড নয়)। আপনি চেষ্টা করতে পারেন help command
মাধ্যাকর্ষণ

এটি zsh বিটিডব্লিউয়ের জন্যও কাজ করে
ফ্লোরিয়ান লচ

93

bash, zshশেল

আপনি যদি চান না যে অন্য কোনও ফাংশন বাশিজম মনে রাখে এবং মনে না করে:

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

$_(ডলার আন্ডারস্কোর) ব্যাশ কমান্ড পরিবর্তনশীল সাম্প্রতিকতম প্যারামিটার রয়েছে। সুতরাং যদি কোনও ব্যবহারকারী কমান্ড লাইনে নিম্নলিখিত টাইপ echo foo bar && echo $_ bazকরতে থাকে:, তবে আউটপুট নীচের হিসাবে হবে:

foo bar
bar baz

দ্য fishশেল

ফিশ শেল এ, আমি নিম্নলিখিত টাইপ করব:

> এমকেডির / হোম / ফু / ডক / বার
> সিডি alt + ↑

উপরের বা নীচে তীর কীটির সাথে মিলিত Alt কীটি কমান্ড প্যারামিটার ইতিহাসের মধ্য দিয়ে ঘুরবে।


4
zshএটিও কাজ করে।
নাবিল কাদিমি

3
আপনি কি ব্যাখ্যা করতে পারবেন $ _ কী? নবাবী এখানে।
arg20

@ নাবিলকাডিমি আপনার অর্থ কি <kbd> Alt <kbd> + <kbd> k <kbd> Zsh এ ভাল কাজ করে? প্রকৃতপক্ষে, zsh 5.4.2 এবং অন-মাই- zsh সহ, Alt + me আমাকে 'এ' চরিত্র দেয়।
উইকএন্ড

1 _ এর জন্য +1 - বোকামি সেক্সি ফ্ল্যান্ডার্স!
সিগ 0

21

জন্য উহু-মাই-zsh ব্যবহারকারী:
$ take 'directory_name'

তথ্যসূত্র: https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet


1
আপনি আরও বিস্তারিতভাবে এই ব্যাখ্যা করতে পারেন?
বিডব্লিউড্রাকো

@bwDraco type take, তাহলে আপনি পাবেন take is a shell function from /home/username/.oh-my-zsh/lib/functions.zsh। vi ফাইলটি তারপরে আপনি পাবেনfunction take() { mkdir -p $@ && cd ${@:$#} }
উইকএন্ড

10

কি সম্পর্কে:

$ mkdir newdirname; cd $_

কোয়েট কুইক্সোট এবং কেজেডের উত্তরগুলির সংমিশ্রণ ও&& ব্যবহার করা কিছুটা সহজ।


26
মূল বিষয়টি &&হ'ল কমান্ডটি ব্যর্থ হলে cdকার্যকর করা হবে নাmkdir

1
@ এসএলএইচকি আসলে এটি ছিল কুইসোটের বিন্দু: সিডি এমনকি এমকেডির ব্যর্থ হলেও (উদাহরণস্বরূপ এটি ইতিমধ্যে উপস্থিত থাকলে ব্যবহারকারীকে দ্বিতীয় কমান্ড লিখতে বাধ্য করে সত্যিকার অর্থে সিডিতে)। তবে এই উত্তরগুলির বিপরীতে যা বলা হয়েছে তার বিপরীতে, এটি স্বাচ্ছন্দ্যের জন্য নয়: && এর চেয়ে জটিল নয়;;
মোয়ালা

7

আপনি এরকম কিছু চেষ্টা করতে পারেন:

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

আপনার স্ক্রিপ্টটি এমন কোনও স্থানে এই স্ক্রিপ্টটি সংরক্ষণ করুন, উদাহরণস্বরূপ, / usr / লোকাল / বিন বা ~ / বিন (আপনাকে এই into /। প্রোফাইল ফাইলটিতে আপনার সর্বশেষে পাঠাতে হবে)। তারপরে আপনি কেবল এটি কল করতে পারেন।


4
কিভাবে এই কাজ করতে পারেন? এটি কেবল স্ক্রিপ্টের আহ্বানকারী নয়, স্ক্রিপ্টের cdপ্রয়োগের প্রসঙ্গে বলে মনে হচ্ছে ~/bin/mkcd
এরিক অলিক


2

এখানে আমি আমার ~/.config/fish/config.fishফাইলে রাখি একটি সাধারণ ফাংশন যা এই কাজটি সম্পাদন করে:

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

-pvট্যাগ একটি উপ-ডিরেক্টরির সঙ্গে ডিরেক্টরি সৃষ্টির জন্য অনুমতি দেয়।


0

ডিরেক্টরি ইতিমধ্যে বিদ্যমান থাকলে কাঙ্ক্ষিত ফলাফলের উপর নির্ভর করে।

ডিরেক্টরি ইতিমধ্যে বিদ্যমান থাকলে ব্যর্থ

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

ডিরেক্টরি নির্বিশেষে পরিবর্তন করুন

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

ব্যবহার এমকেসিডি কিছু / পথ / থেকে / আমার / দির


0

আমি দেখতে পেয়েছি যে নীচের ফাংশনটি কেবল একটি ডিরেক্টরি তৈরি করতে পারে, যদি আমি একই সাথে উপ-ডিরেক্টরি তৈরি করতে চাই তবে এটি কাজ করে না:

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

সুতরাং আমি এটি পরিবর্তন করেছি এবং এখন এটির দুর্দান্ত কাজ!

function mkcd
{
  command mkdir -pv $1 && cd $1 && echo "Now in `pwd`"
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.