ডিরেক্টরি পরিবর্তন করুন (সিডি) তবে কেবল পথের একটি অংশ প্রতিস্থাপন করে


14

এটি সম্ভব কিনা তা নিশ্চিত না, তবে আমি মনে করি আমার পুরানো দিনগুলি থেকে এআইএক্স ব্যবহার করে পথের কোন অংশটি অন্য কোনও কিছুর দ্বারা প্রতিস্থাপন করা দরকার তা কেবল এই বলে আমার পথ পরিবর্তন করা সম্ভব হয়েছিল। উদাহরণস্বরূপ, বলুন আমার দুটি পথ রয়েছে:

/etc/application-2.0.1/options/default

এবং

/etc/application-1.0.8/options/default

আমি কমান্ড ব্যবহার করে ফোল্ডার 1 থেকে 2 এ স্যুইচ করতে পারি

সিডি / ২.0.০.1.২০১1/০.0.০৮/২০১/

যা প্রতিস্থাপন করবে, পাথ, স্ট্রিং 2.0.1থেকে 1.0.8। স্পষ্টতই এটি এখন আমার কাজ করে না। তবে এটি করার কোনও উপায় আছে কি?

উত্তর:


11

আপনি যদি শেল হিসাবে zsh ব্যবহার করেন তবে সবে প্রবেশ করতে পারেন cd 1.0.8 2.0.1


এটি আমার কাছে সেরা বিকল্প বলে মনে হচ্ছে। এখন কীভাবে সেই জিনিসটি ইনস্টল করবেন দেখুন :)
নাথনভদা

1
sudo apt-get install zsh
কুশিক

1
র্যান্ডমমনকির উত্তরটি বাশের "সিডি" অন্তর্নির্মিতের মধ্যে পুরো পাথ বিকল্প প্রতিস্থাপন কার্যকারিতা মঞ্জুরি দেয়।
কুমার্স

9

এই উবুন্টু 10.04 তে ব্যাশ কাজ করা উচিত: cd ${PWD/old/new}। মূলত এটি oldআপনার বর্তমান কার্যনির্বাহী ডিরেক্টরিতে প্রথম উপস্থিতির সাথে প্রতিস্থাপন করে new। নীচে 2 উদাহরণ।

উদাহরণ 1

ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$ 

উদাহরণ 2

ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1 dir-v2.2.2 dir-v3.0.7
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1/ind dir-v2.2.2/ind dir-v3.0.7/ind
ing02741@hoster:~/src/cdtest$ cd dir-v1.0.1/ind/
ing02741@hoster:~/src/cdtest/dir-v1.0.1/ind$ cd ${PWD/1.0.1/2.2.2}
ing02741@hoster:~/src/cdtest/dir-v2.2.2/ind$ 

উপরে sepp2k ধারনা উপর ধার, আপনি এই মত একটি ফাংশন করতে পারে

function mycd { cd ${PWD/$1/$2} }

এবং তারপরে mycd 2.0.1 1.0.8স্যুইচ করার মতো কিছু ব্যবহার করুন ।


1
এটি সেখানে 1/2 পথ। যদি আপনি র‌্যান্ডমমনকির উত্তরটি লক্ষ্য করেন তবে আপনি দেখতে পাবেন বিল্ট-ইন বাশ সিডির মধ্যে সম্পূর্ণ কার্যকারিতা সম্ভব।
কুমারশ

8

আমি নিজেই এই বৈশিষ্ট্যটি ব্যবহার করেছি (এবং মিস করেছি)। এটি নির্ভর করে আপনি কোন স্বাদ এবং / অথবা আপনার * নিক্স প্রকাশ করছেন। আপনি যদি ব্যাশ ব্যবহার করেন তবে এই কার্যকারিতাটি অন্তর্ভুক্ত করার জন্য বিল্টিন সিডি বাড়ানোর একটি সহজ উপায়। এটি আপনার .bashrc এ রাখুন (বা এটি আপনার বাশ শেলের মধ্যে পেস্ট করতে এবং এন্টার টিপুন)।

function cd() { if [ $# -eq 2 ]; then builtin cd ${PWD/$1/$2}; else builtin cd $1; fi }

7

আপনি সম্ভবত ইতিহাসের প্রসারণ মনে করছেন। আমি জানি না যে এআইএক্স-এ আপনার শেলের মধ্যে কী ছিল, তবে ব্যাশে এটি করার একটি উপায় ^2.0.1^1.0.8

বাশ এবং zsh এর মতো শেলগুলির সাথে শক্তিশালী কমান্ড লাইন সম্পাদনা রয়েছে এর সাথে ইতিহাসের সম্প্রসারণ কম কার্যকর। আপনি পূর্ববর্তী কমান্ড প্রত্যাহার চাবি তীর ব্যবহার করতে পারেন, এবং Alt+ + .পূর্ববর্তী কমান্ডের শেষ কথা সন্নিবেশ করতে (প্রেস দুবার তার আগে কমান্ড পৌঁছানোর ইত্যাদি থেকে)।


histverifyঅপশনটি shoptচালু থাকলে আপনাকে কেবল দ্বিতীয়বার এন্টার টিপতে হবে ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ ডেনিস: ধন্যবাদ, --norcপরীক্ষার সময় আমি ভুলে গিয়েছিলাম ।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

3

আপনি যদি একজন ভিআই ফ্যান হন তবে আপনি নিজের শেলটিতে vi মোড সক্ষম করতে পারবেন (উদাহরণস্বরূপ ব্যাশ সেট-ও vi) এবং vi এর কমান্ড মোডটি ব্যবহার করতে পারেন ...

অথবা আপনি ক্রেজি ইতিহাসের সম্প্রসারণ করতে পারেন (zsh এ পরীক্ষিত, সম্ভবত বাশের ক্ষেত্রেও):

$ cd /etc/application-1.0.8/options/default
cd: no such file or directory: /etc/application-1.0.8/options/default

$ !!:s/1.0.8/2.0.1/
cd /etc/application-2.0.1/options/default
cd: no such file or directory: /etc/application-2.0.1/options/default

বিটিডব্লিউ, এটি ব্যাশে পরীক্ষা করেছে এবং এটি সেখানে কাজ করে।
maxschlepzig

3
cd `pwd | sed 's/2\.0\.1/1\.0\.8/'`

তবে এটি খুব সুন্দর নয়। আপনি এটি কোনও কার্যক্রমে রেখে কিছুটা সুন্দর করে তুলতে পারেন:

function mycd { cd `pwd | sed s$1` }

এবং তারপরে এটিকে কল করা:

mycd '/2\.0\.1/1.0.8/'

যদিও আপনাকে এখনও বিন্দুগুলি থেকে বাঁচতে হবে তবে আমি নিশ্চিত যে এটি কিছুটা চিন্তাভাবনা করেও কাজ করা যেতে পারে।


আপনার অবশ্যই প্রতিস্থাপনের ডান দিকে বিন্দুগুলি এড়াতে হবে না। বেশিরভাগ ক্ষেত্রে, বাম দিকের বিন্দুগুলি থেকে অব্যাহতি দেওয়াও নিরীহ হতে পারে, যদি না আপনি একই রকমের নামযুক্ত ফোল্ডার পেয়ে থাকেন।
উদ্ভট

3
 ^2.0.1^1.0.8 

উপরের কমান্ডটি শেষ কমান্ডে 2.0.1 থেকে 1.0.8 এ অদলবদল করে, এটি এর কাজটি বাশ


2

-P|-L|-কাজটি নিম্নলিখিতটি ব্যবহার করে তা নিশ্চিত করতে :

function cd () {
    typeset arg=
    case $1 in -|-L|-P) arg=$1 ; shift ;; esac
    [ $# -gt 1 ] && {
        builtin cd $arg "${PWD/$1/$2}"
    } || {
        builtin cd $arg "$@"
    }
}

1

এআইএক্স সম্পর্কে নিশ্চিত নন, তবে আমি সোলারিস বাক্সগুলিতে একটি প্রশাসনিক কর্ন শেল ট্রিক হিসাবে মনে করি। আপনার উদাহরণে, আপনি কমান্ডটি টাইপ করতে চান:

cd 2.0.1 1.0.8

আরও কিছু তথ্য এখানে


এটি আমার পক্ষে কাজ করেনি: উবুন্টু 10.04, বাশ "জিএনইউ বাশ, সংস্করণ 4.1.5 (1) -রেলিজ (আই 486-পিসি-লিনাক্স-গনু)", আমি নিম্নলিখিত কমান্ড চেষ্টা করেছি: 2048 সিডি 2049 সিডি / সিআরসি / স্থানীয় -বুন্টু-প্যাচস / সিডিটেস্ট / দির-ভি ১.০.৯ / জিনোম-কন্ট্রোল-সেন্টার-২.৩০.১ / ক্যাপলেটস / নেটওয়ার্ক / ২০৫০ সিডি দির-ভি ১.২.৯ দির-ভি ১.০.৯ / হোম / ইনিং0২74৪১১ / এসসিআর / লোকাল-উবুন্টু- প্যাচ / সিডিটেস্ট / দির-ভি ১.২.৯ / জিনোম-কন্ট্রোল-সেন্টার -২.৩০.১ / ক্যাপলেট / নেটওয়ার্ক একটি বৈধ পথ।
কুশিক

@ কোশিক: তিনি লিখেছেন যে এটি একটি কর্ন শেল ট্রিক। আপনি বাশ ব্যবহার করছেন। bash! = korn। উবুন্টু এর অধীনে ksh প্যাকেজ 'ksh' এর মাধ্যমে উপলব্ধ।
ম্যাক্সচলেপজিগ

অপস, আমার খারাপ। দুঃখিত আমি এটি উপেক্ষা করেছি। @ ম্যাক্সচলেপজিগ - নির্দেশ করার জন্য ধন্যবাদ।
কুশিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.