আমি কীভাবে আগের ডিরেক্টরিতে গিয়ে পরিবর্তিত হতে পারি?


214

আমি বর্তমানে আমার প্রচুর কার্যকরী সময়টি দুটি পথের মাঝে পিছনে পিছনে এগিয়ে যাচ্ছি যা গাছের নীচে রয়েছে এবং একে অপরের থেকে মূল থেকে সরে গেছে। এটি আমাকে আঘাত করে যে আমার জীবন অনেক সহজ হতে পারে যদি তার পক্ষে যুক্তি থাকে cdযে ব্যবহারকারীকে তারা সর্বশেষ ডিরেক্টরিতে নিয়ে যায়।

এটি হ'ল যদি আমি ভিতরে থাকি:

/etc/foo/bar/baz/moo

এবং তারপরে টাইপ করুন:

cd /var/lib/fubarred_app/blargh/logs

আমি আবার পুরো পথটি টাইপ না করে প্রথম ডিরেক্টরিতে ফিরে যেতে সক্ষম হতে চাই।

মেমরি কীটি এটি কাটবে না যেহেতু আমি প্রতিটি জায়গায় পর্যাপ্ত কমান্ড ব্যবহার করি যে এটি নিজের টাইপ করার মতো ফিরে যেতে এবং আমার যে পথটি চাই তা খুঁজে পাওয়া ঠিক ততটাই কঠিন difficult

একটি শর্ট কমান্ড আছে যা আমাকে কেবল পূর্ববর্তী ডিরেক্টরিতে যেতে দেবে?


8
@ ব্রায়ানের দুর্দান্ত উত্তর ছাড়াও , আপনি প্রতিটি পথের জন্য একটি জুড়ি উপাধি তৈরি করতে বিবেচনা করতে পারেন যাতে আপনি ঠিক তেমন কিছু টাইপ করতে পারেন: " bazmoo" বা " blarghlog" প্রম্পটে :)
ওয়ারেন

4
আপনি শুধু জিএনইউ স্ক্রিন ব্যবহার করবেন না কেন ?
শি

2
কোন শেল? এটি একটি বিশাল পার্থক্য করে।
র্যান্ডাল শোয়ার্জ

নিবন্ধন করুন এটাই সব কিছু করার আমার পছন্দের উপায়। আমি আমার কম্পিউটারটি
যেটির

ফ্যাসড দুর্দান্ত। এটা দেখ.
majkinetor

উত্তর:


301

আদেশ

cd -

মূলধারার বেশিরভাগ শেলগুলিতে আপনার যে অদলবদলের প্রয়োজন হবে তা সম্পাদন করবে, এটি দীর্ঘতর রূপের

cd "$OLDPWD"

যা পরিবেশগত পরিবর্তনশীল ব্যবহার করবে যা পূর্ববর্তী কার্য ডিরেক্টরিটি ধারণ করে।


জন্য POSIX man পৃষ্ঠাcd উল্লেখ:

বর্ণনা

যদি, উপরের পদক্ষেপগুলি সম্পাদন করার সময়, পিডব্লিউডি এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করা হয়, তবে ওলডিপিডাব্লুডি এনভায়রনমেন্ট ভেরিয়েবলটি পুরানো ওয়ার্কিং ডিরেক্টরিের মানতেও পরিবর্তিত হয়ে যাবে (এটি সিডিতে কল করার আগেই বর্তমান ওয়ার্কিং ডিরেক্টরি)।

OPERANDS

  -   যখন হাইফেন অপারেন্ড হিসাবে ব্যবহৃত হয়, এটি আদেশের সমান হবে:

cd "$OLDPWD" && pwd 

যা পূর্ববর্তী ওয়ার্কিং ডিরেক্টরিতে পরিবর্তিত হয় এবং তার নামটি লিখে দেয়।


7
মনে রাখবেন এটি সত্যই আপনি যে শেলটি ব্যবহার করছেন তার উপর নির্ভর করে এবং যেহেতু আপনি নির্দিষ্ট করেন নি, অস্তিত্বহীন "পোর্টেবল" উত্তর দেওয়া শক্ত হবে be
র্যান্ডাল শোয়ার্জ

16
@ র্যান্ডল, সম্ভবত আপনি আপনার সমস্ত ব্যক্তিগত শেল মন্তব্য একটি ভোল্ট্রন শেল উত্তরের সাথে সংযুক্ত করতে পারেন।
হাইপারস্লাগ

@Randall। আমি ব্যাশ ব্যবহার করছিলাম এটি ksh এবং zsh এও কাজ করে। যাইহোক, আমি প্রথমে 1994 এ লার্নিং পার্লের সংস্করণটি থেকে প্রোগ্রাম শিখি তাই আমাকে ক্ষমা করে দিন যখন আমি কিছুটা ফ্যানবয়কেছিলাম। :)
ইয়েজচাক

হুম, আমি এটির cd $OLDPWDজন্য ব্যবহার করেছি । এটি দুর্দান্ত যে মূলধারার শেলগুলি একটি উপায়ে সংক্ষিপ্ত রূপ দেয়।
ulidtko

2
@sinni কিছু স্বাদে কি আছে pushd, এবং অন্তত এটি একটি builtin এর bash
slhck

105

Bryan এর উত্তর ছাড়াও, এটা এর রয়েছে কহতব্য এর pushdএবং popd, যা একটি স্ট্যাক মত ডিরেক্টরি বিল্ড আপ। এটি উইন্ডোজ এনটি-তেও উপলভ্য; তবে এটি সমস্ত শেলগুলিতে পাওয়া যায় না।

উদাহরণস্বরূপ, আমরা তিনটি ভিন্ন ডিরেক্টরিতে যেতে পারি এবং আপনি যখন কল করবেন তখন সর্বদা আপনার স্ট্যাকটি দেখতে পাবেন pushd:

charon:~ werner$ pushd Documents/
~/Documents ~

charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~

charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~

এবং আপনি যখন popdপরপর তিনবার কল করেন , আপনি বিপরীত ক্রমে স্ট্যাকের সেই ডিরেক্টরিতে পাবেন। একই সময়ে, স্ট্যাকটি আবার খালি করা হবে।

charon:Downloads werner$ popd
~/Movies ~/Documents ~

charon:Movies werner$ popd
~/Documents ~

charon:Documents werner$ popd
~

charon:~ werner$ popd
-bash: popd: directory stack empty

আপনি যদি Zsh ব্যবহার করছেন; এটিতে একটি AUTO_PUSHD বিকল্প রয়েছে, যা স্বয়ংক্রিয়ভাবে cdস্ট্যাকের দিকে ঠেলা দেবে ।


পুশ এবং পপড সমস্ত শেল পাওয়া যায় না।
র্যান্ডাল শোয়ার্জ

5
@ ওয়েইসও: সত্যি? আমি আশা করি বাশ যেটি পেয়েছিল ... অবশ্যই, আমি উপনাম cdকরতে পারতাম pushd, এবং এটি বেশিরভাগই একই রকম হত।
ক্রিস চরবারুক

3
বা ওরফে পিডি ঠেকাতে এবং উভয় আছে। বিটিডাব্লু পুশড (বা পিডি, যদি আপনি এটির নাম রাখেন) নিজেই বর্তমান ডিরেক্টরি এবং শেষ-পুশ ডিরেক্টরিটি অদলবদল করে, মূলত 'সিডি -' কী করে তা সম্পাদন করে।
জে রবার্ট

আমি ধারণাটি পছন্দ করি তবে সেগুলি কখনই অভ্যস্ত হয়নি।
থরবজর্ন রাভন অ্যান্ডারসন

13

কিছু "জাম্প" প্রোগ্রাম রয়েছে

  • অটোজাম্প (মূল বৈশিষ্ট্য সহ রক্ষণাবেক্ষণ করা)
  • j2 ( আপাতত কিছু উন্নত বৈশিষ্ট্যযুক্ত
  • z (উন্নত বৈশিষ্ট্য সহ "জে" বজায় রাখা সংস্করণ)

এগুলি যে কোনও ধরণের ডিরেক্টরি নেভিগেশনকে সহজ করে দেয়। আপনি পথের একটি অংশ দিয়ে এটি ব্যবহার করেন এবং এটি ঠিক কাজ করে।

আপনার ক্ষেত্রে

~$ j baz 
/etc/foo/bar/baz/moo$

~$ j bla 
/var/lib/fubarred_app/blargh/logs$

আপনি এই প্রোগ্রামগুলিতে আপনার যে কোনও চিঠি নির্ধারণ করতে পারেন, "জে" traditionতিহ্য :)

j2 এবং z একাধিক অনুসন্ধান পদগুলিকে সমর্থন করে, ...

~$ j baz src
/home/me/projects/baz/repository/trunk/src$

... এবং আরও বিকল্প।

~$ j -l  # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank

2
"j" স্পষ্টভাবে শেল নির্দিষ্ট। আপনি তা বলেন নি।
র্যান্ডাল শোয়ার্জ

3
@ রেন্ডাল: এটি শেল-নির্দিষ্ট কীভাবে? এটি একটি প্রোগ্রাম।
ফিক্সি

3
আমি বোকা। :) এখন বুঝতে পারছি.
রেন্ডাল শোয়ার্জ

10

পাশাপাশি cd -এবংcd $OLDPWD

আপনি আগে CTRL-Rযে cdকমান্ডটি লিখেছিলেন তার কয়েকটি অক্ষর টিপে এবং টাইপ করে আপনি ইতিহাস অনুসন্ধান ব্যবহার করতে পারেন । CTRL-Rবারবার টিপলে পুরানো ম্যাচ আসবে।

আপনার যদি পরিবর্তনের জন্য দুটিরও বেশি পথ থাকে তবে এই পদ্ধতিটি আরও কার্যকর হবে।


1
CTRL-R অগত্যা সহায়তা করবে না। আপনি হয়ত / কিছু / অস্পষ্ট / ডিরেক্টরি / গভীর এবং "সিডি ইভেন্দিপারদীর" করে তারপর ~ / কোথাও / ভিন্ন হয়ে গিয়েছিলেন।
জাস্টিনটাইম

1
গ্রেট! এটি cdদুর্দান্ত কাজের চেয়ে অন্যান্য জিনিসের জন্য কাজ করে !
নিলোকট

9

আপনি ডিরেক্টরিগুলির জন্য সহজেই উপকরণ তৈরি করতে এটি ব্যবহার করতে পারেন:

a() { alias $1=cd\ $PWD; }

a 1

এবং পরে:

1

1
কেবলমাত্র একটি শেল যা অ্যালিয়াস এবং ফাংশন বোঝে। সব না।
র্যান্ডাল শোয়ার্জ

তাই এই alias =অংশগুলি টাইপ করা যায় ? Hmmmm
Xen2050

6

বাশমার্কগুলি আপনাকে ফোল্ডারগুলির একটি সিরিজ বুকমার্ক করতে দেয় এবং ট্যাব সমাপ্তির সাথে তাদের মধ্যে ঝাঁপিয়ে পড়বে:

কোনও ফোল্ডার বুকমার্ক করতে, কেবল সেই ফোল্ডারে যান, তারপরে এটির মতো বুকমার্ক করুন:

bookmark foo

বুকমার্কটির নাম দেওয়া হবে "ফু"। আপনি যখন ফোল্ডারে ফিরে যেতে চান তখন ব্যবহার করুন:

go foo

বুকমার্কগুলির একটি তালিকা দেখতে:

bookmarksshow

শাবী বুকমার্কে যেতে, ট্যাব সমাপ্তি কাজ করে:

go sho[tab]

4

আর একটি সম্ভাবনা হ'ল প্রতিটি ডিরেক্টরিতে একটি করে স্থিত করে দুটি উইন্ডো খোলা রাখা।


যদিও ভাগ করা ইতিহাস নেই, আপনি যদি পূর্ববর্তী আদেশগুলি নিয়মিত ব্যবহার / সম্পাদনা করেন (সম্ভবত কোনও রিসেট
এগুলি পেয়েছে

@ Xen2050 share_historyzsh এ শেল অপশনটি দেখুন ।
রেডন রোসবারো

4

আমি জানি এটি কঠোরভাবে আপনার প্রশ্নের উত্তর বলছে না, তবে আপনাকে আপনাকে আপনার গুরুত্বপূর্ণ ডিরেক্টরিতে নিয়ে যাওয়ার লক্ষ্যে পৌঁছাতে সহায়ক ।

যে কোনও বংশদ্ভুত ইউনিক্স- ব্যাশে সিডি-কমান্ড অনুসন্ধান করা ফোল্ডারটি প্রসারিত করতে আপনি CDPATH ব্যবহার করতে পারেন ।

আমার .bashrc- ফাইল থেকে:

export CDPATH='.:~/source/'

সিডি প্রথমে আপনার বর্তমান ফোল্ডারে অনুসন্ধান করে, তারপরে আমার কোডিং-প্রকল্প-ডিরেক্টরিতে অনুসন্ধান করে।

cd myproject

.. আমাকে ~ / উত্স / মাইপ্রজেক্টে নিয়ে যায় যেখানে থেকে আমি বর্তমানে যেখানে দাঁড়িয়ে আছি।

সরল সামান্য বৈশিষ্ট্য যা আমার ডিরেক্টরিতে নেভিগেশনকে অনেক সহায়তা করেছে।


1
+1 এটি সিডিপ্যাথ ফোল্ডারটির cdস্বতঃপূরণ ( টিএবি ) তালিকায় যুক্ত করে, যা ভাল। কিন্তু যদি .অন্তর্ভুক্ত করা হয় না এবং সেখানে সঙ্গে একটি CDPATH ফোল্ডারে একটি ফোল্ডার আছে কিনা একই নামের আপনার বর্তমান ডিরেক্টরির মধ্যে এক হিসাবে, তারপর cd samenameCDPATH ডিরেক্টরি ও যেতে হবে না বর্তমান ডিরেক্টরির মধ্যে এক, যা খারাপ। cd ./samenameডুপ ফোল্ডারে যেতে ব্যবহার করতে হবে।
Xen2050

হ্যাঁ, ভাল মন্তব্য। সর্বদা প্রথমটি অন্তর্ভুক্ত করুন , বা আপনি অদ্ভুত জিনিস অভিজ্ঞতা পাবেন।
ফেরিম

3

হ্যাঁ, cd -যাওয়ার উপায় তবে আমি আপনার শেলটিতে পাওয়ারের অভাব সম্পর্কে চিন্তিত। popdএবং pushdভালও, এবং jজিনিসটিও ভাল দেখাচ্ছে।

আমি আমার নিজস্ব ইউটিলিটিটি রিংয়ের মধ্যে ফেলে দেব ... এটি এমন কিছু যা আমি নির্মাণ করছি, গত 10 বছর বা তার বেশি সময় ধরে আমার সাথে কাস্টমাইজ এবং মাইগ্রেট করছি এবং আমি যা করতে চাই তা এটি ঠিক কাজ করে।

আমার ডিরেক্টরি পরিচালনার ইউটিলিটির জন্য ব্লগ পোস্ট

যদি এটি আপনার পক্ষে কাজ করে তবে দুর্দান্ত, তবে যদি তা আমাকে প্রতিশ্রুতি দেয় না তবে আপনি অন্য কিছু পাবেন :) আপনি কেবল cdএকা একা বাঁচতে পারবেন না ।


3

যদি আপনার কাছে কেবল ২ টি ডিরেক্টরি থাকে তবে সহজ উপায় হ'ল উল্লিখিত,

cd -

অতীতে যখন আমি এই জাতীয় জিনিসগুলি পেয়েছিলাম তখন আমার বেশ কয়েকটি কৌশল ছিল যা আমি সাহায্য করেছিলাম।

  1. .Cshrc ফাইলে ওরফে কমান্ডগুলি রাখুন, এরকম কিছু

    alias moo /etc/foo/bar/baz/moo  
    alias logs cd /var/lib/fubarred_app/blargh/logs
    
  2. আমার হোম ডিরেক্টরি থেকে আগ্রহের পথে শর্টকাটগুলি লিঙ্ক করুন। এটি এক সময়ের জিনিস।

    cd ~
    ln -s /var/lib/fubarred_app/blargh/logs blargh
    ln -s /etc/foo/bar/baz/moo
    

এটি ডিরেক্টরিকে এত সহজেই পরিবর্তন করার অনুমতি দেয়:

   cd ~/moo
   cd ~/blargh

2

অটোজাম্প হ'ল বাশ / শ / zsh "সিডি" কমান্ড যা আপনার ক্রিয়া থেকে এই ভিডিওটি দেখুন

সুতরাং এটি আপনাকে সর্বশেষ ফোল্ডারগুলি শিখার পরে মুতে স্থানান্তরিত করবে

j moo

2

মরীচি

আমার নিজস্ব সরঞ্জাম আছে তবে ডেরিক্স সরঞ্জামটিও দেখতে jহবে।

অবশ্যই পিছনে পিছনে লাফানোর প্রথম পছন্দটি is

সিডি -

আমার সরঞ্জামটি সিস্টেমগুলিতে অনন্য নামযুক্ত ডিরেক্টরিগুলির জন্য বোঝানো হয়েছে, যেখানে locateউপলব্ধ; এটি একটি ম্যাচিং ডিরেক্টরি নামের অনুসন্ধান করে এবং প্রথম ম্যাচে লাফ দেয়:

beam () 
{ 
    ldir=$(locate $1 | egrep "$1$" | head -n 1);
    if [[ -d $ldir ]]; then
        echo $ldir;
        cd $ldir;
    else
        echo "no directory "$ldir;
    fi
}

নির্ভরতা:

  • সনাক্ত
  • , grep
  • মাথা

অপূর্ণতা:

  • সর্বশেষ আপডেটড-রানের চেয়ে নতুন ডিরেক্টরি খুঁজে পাওয়া যায় নি
  • যদি একাধিক ডিরেক্টরি মেলে, তবে এটি আপনার ভাগ্যের উপর নির্ভর করে, আপনি যেটিকে মনে রেখেছিলেন সেটির প্রতিই আপনাকে সাজিয়ে তোলা হচ্ছে।

উন্নতি / পরিবর্তন:

  • প্রথম ডিরেক্টরিটি বেছে নেওয়ার পরিবর্তে কোডটিকে পছন্দগুলির একটি তালিকা প্রদর্শন করতে সংশোধন করা যেতে পারে, ব্যবহারকারীকে ইনপুট 1,2,3, ... / বিন, / ইউএসআর / বিন, / ইউএসআর / স্থানীয় / বিনে যেতে ...

ব্যবহার:

  • এটি সুবিধাজনক উপায়ে ব্যবহার করতে আপনার /etc/bash.bashrc বা ~ / .Bashprofile এ ফাংশনটি রেখে দিন।

আমার সমাধানের সুবিধা:

  • 2 ডিরেক্টরি যেমন সীমাবদ্ধ নয় cd -
  • মরীচি ব্যবহারের আগে আপনাকে একবার ডিরেক্টরিতে যেতে হবে না।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.