আমি কীভাবে পুশড এবং পপড কমান্ড ব্যবহার করব?


332

উভয়ের ব্যবহারিক ব্যবহারগুলি কী pushdএবং popdযখন এই দুটি কমান্ড ব্যবহার করার সুবিধা রয়েছে cdএবং এবং cd -?

সম্পাদনা : আমি এই দুটি আদেশের জন্য ব্যবহারের কয়েকটি ব্যবহারিক উদাহরণ বা ডিরেক্টরিতে স্ট্যাক রাখার কারণগুলির জন্য সন্ধান করছি (যখন আপনার ট্যাব সমাপ্তি, cd -সংক্ষিপ্তকরণের জন্য উপকরণ cd ..ইত্যাদি) etc.

উত্তর:


304

pushd, popdএবং dirsহ'ল শেল বিল্টিনগুলি যা আপনাকে ডিরেক্টরি স্ট্যাককে ম্যানিপুলেট করতে দেয় । এটি ডিরেক্টরি পরিবর্তন করতে ব্যবহার করা যেতে পারে তবে আপনি যে ডিরেক্টরি থেকে এসেছিলেন সেই ডিরেক্টরিতে ফিরে আসতে পারেন।

উদাহরণ স্বরূপ

নিম্নলিখিত ডিরেক্টরিগুলি দিয়ে শুরু করুন:

$ ls
dir1  dir2  dir3

dir1 থেকে ধাক্কা

$ pushd dir1
~/somedir/dir1 ~/somedir
$ dirs
~/somedir/dir1 ~/somedir

dirsকমান্ডটি নিশ্চিত করে যে আমাদের এখন স্ট্যাকের 2 টি ডিরেক্টরি রয়েছে। dir1এবং মূল dir somedir,।

../dir3 এ ঠেলা (কারণ আমরা dir1এখন ভিতরে আছি )

$ pushd ../dir3
~/somedir/dir3 ~/somedir/dir1 ~/somedir
$ dirs
~/somedir/dir3 ~/somedir/dir1 ~/somedir
$ pwd
/home/saml/somedir/dir3

dirsস্ট্যাক এখন আমাদের 3 ডিরেক্টরি আছে দেখায়। dir3, dir1এবং somedir। দিকটি লক্ষ্য করুন। প্রতিটি নতুন ডিরেক্টরি বামে যুক্ত হচ্ছে। যখন আমরা ডিরেক্টরিগুলি পপিং শুরু করি, তারা বাম দিক থেকেও আসবে।

ম্যানুয়ালি ডিরেক্টরিতে পরিবর্তন করুন ../dir2

$ cd ../dir2
$ pwd
/home/saml/somedir/dir2
$ dirs
~/somedir/dir2 ~/somedir/dir1 ~/somedir

ডিরেক্টরি পপিং শুরু করুন

$ popd
~/somedir/dir1 ~/somedir
$ pwd
/home/saml/somedir/dir1

লক্ষ্য করুন আমরা ফিরে এসেছি dir1

আবার পপ করুন ...

$ popd
~/somedir    
$ pwd
/home/saml/somedir

এবং আমরা ফিরে এসেছি যেখানে আমরা শুরু করেছি somedir,।

কিছুটা বিভ্রান্ত হতে পারে তবে স্ট্যাকের প্রধানটি আপনি বর্তমানে যে ডিরেক্টরিটিতে রয়েছেন তা হল Hence তাই আমরা যখন ফিরে যাই somedir, যদিও এটি dirsদেখায়:

$ dirs
~/somedir

আমাদের স্ট্যাক খালি খালি।

$ popd
bash: popd: directory stack empty

19
ধন্যবাদ, আমি স্ট্যাকের ধারণা এবং এই আদেশগুলি কীভাবে কাজ করে তা পুরোপুরি বুঝতে পারি। যাইহোক, আমি ডিরেক্টরিগুলির সাথে স্ট্যাক রাখার কিছু ব্যবহারিক কারণ সন্ধান করছি (যখন আপনার ট্যাব সমাপ্তি, cd -সংক্ষিপ্তকরণের জন্য উপকরণ cd ..ইত্যাদি)।
সিনট্যাগমা

21
আমি প্রায়শই pushd& popdস্ক্রিপ্টগুলিতে / সি ব্যবহার করি তারা আমার কাছ থেকে কোথায় এসেছিল তা স্মরণে রাখতে আমাকে বাঁচায়, আমি popdযেখানে এসেছি সেখান থেকে ফিরে আসতে পারি always আমি সাধারণত popd >/dev/null 2>&1এটি নিঃশব্দ করতে করতে না। আমি আমার শেলটিতে প্রতিদিন সিডি ব্যবহার করি। এই নিবন্ধে আরও কিছু সময় সাশ্রয় করার টিপস রয়েছে: thegeekstuff.com/2008/10/…
slm

2
@ গ্যারেট - এমন কোনও কিছুই নয় যেটি আমি ধারণ করতে পারি।
SLM

4
@ গ্যারেট @ এসএলএম যেহেতু cd -কেবলমাত্র সর্বশেষ ডিরেক্টরিটি অনুসরণ করে, আমি ধারণা করি যে আপনি যদি এমন কোনও ফাংশন কল করেন যা অভ্যন্তরীণভাবে ডিরেক্টরিও পরিবর্তন করে। সেক্ষেত্রে, ফাংশনটি পুনরায় সেট করতে হবে - আপনার বর্তমান ডিরেক্টরিতে, আপনি যে ডিরেক্টরিতে ফিরে যেতে চান সেটি নয় not পুশড / পপড নিরাপদতম পদ্ধতি method দ্রষ্টব্য: আমি আমার তত্ত্ব পরীক্ষা করিনি।
বাইনারি ফিলি

5
~/somedir/dir3প্রথমটির পরে কেন ফিরে যাচ্ছি না popd?
ziyuang

198

নেই একটি সত্যিই দরকারী ব্যবহারের ক্ষেত্রে pushdএবং popdকমান্ড একযোগে বিভিন্ন ফোল্ডার সঙ্গে কাজ করার জন্য।

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

নীচে একটি সাধারণ উদাহরণ দেখুন।


প্রথমে আসুন ফোল্ডার স্ট্রাকচারের উদাহরণ তৈরি করি।

    user@vb:~$ mkdir navigate
    user@vb:~/navigate$ mkdir dir1
    user@vb:~/navigate$ mkdir dir2
    user@vb:~/navigate$ mkdir dir3

তারপরে আপনি স্ট্যাকটিতে আপনার সমস্ত ফোল্ডার যুক্ত করতে পারেন:

    user@vb:~/navigate$ pushd dir1/
    ~/navigate/dir1 ~/navigate
    user@vb:~/navigate/dir1$ pushd ../dir2/
    ~/navigate/dir2 ~/navigate/dir1 ~/navigate
    user@vb:~/navigate/dir2$ pushd ../dir3/
    ~/navigate/dir3 ~/navigate/dir2 ~/navigate/dir1 ~/navigate

আপনি এটি দেখতে পারেন:

    user@vb:~/navigate/dir3$ dirs -v
     0  ~/navigate/dir3
     1  ~/navigate/dir2
     2  ~/navigate/dir1
     3  ~/navigate

নিরাপদে নেভিগেট করতে, আপনাকে সর্বশেষ (শূন্য) ফোল্ডারটি দু'বার যুক্ত করতে হবে, কারণ এটি সর্বদা পুনরায় লেখা হবে:

    user@vb:~/navigate/dir3$ pushd .
    user@vb:~/navigate/dir3$ dirs -v
     0  ~/navigate/dir3
     1  ~/navigate/dir3
     2  ~/navigate/dir2
     3  ~/navigate/dir1
     4  ~/navigate

এখন, আপনি এই ফোল্ডারগুলির মধ্য দিয়ে ঘুরে আসতে পারেন এবং ফোল্ডারগুলির এলিয়াসগুলির মতো স্ট্যাকের সাথে কাজ করতে পারেন। আমি অনুমান করি যে নিম্নলিখিত অংশটি স্ব-বর্ণনামূলক:

    user@vb:~/navigate/dir3$ cd ~4
    user@vb:~/navigate$ dirs -v
     0  ~/navigate
     1  ~/navigate/dir3
     2  ~/navigate/dir2
     3  ~/navigate/dir1
     4  ~/navigate
    user@vb:~/navigate$ cd ~3
    user@vb:~/navigate/dir1$ dirs -v
     0  ~/navigate/dir1
     1  ~/navigate/dir3
     2  ~/navigate/dir2
     3  ~/navigate/dir1
     4  ~/navigate
    user@vb:~/navigate/dir1$ touch text.txt
    user@vb:~/navigate/dir1$ cp text.txt ~2
    user@vb:~/navigate/dir1$ ls ~2
    text.txt
    user@vb:~/navigate/dir1$ dirs -v
     0  ~/navigate/dir1
     1  ~/navigate/dir3
     2  ~/navigate/dir2
     3  ~/navigate/dir1
     4  ~/navigate

অতিরিক্ত টিপ হল এর জন্য কিছু উপন্যাস তৈরি করা dirs -v

উদাহরণ স্বরূপ:

# In ~/.bashrc
alias dirs="dirs -v"

28
এবং আপনি স্ট্যাকটি সাফ করতে পারবেনdirs -c
জুন মুরাকামি

19
বাস্তবে কিছু ব্যবহারিক উদাহরণ দেওয়ার জন্য +1। ম্যান পৃষ্ঠা থেকে পুশ / পপড কী করে তা দেখতে সহজ, তবে ডায়ার্স এবং সিডি ~ # প্রথমে সুস্পষ্ট নয়।
স্ক্রিবলমাচার

পরিবর্তে এই জাতীয় কর্মপ্রবাহের জন্য আপনি রোজার মতো সমাধানও ব্যবহার করতে পারেন, যদিও
WuTheFWasThat

সুতরাং এটি একটি CDPATH সেট করার চেয়ে আরও ক্ষণস্থায়ী ব্যবহারের ক্ষেত্রে ভাল?
rfabbri

2
@ জুন, একটি শটে 3 টি ডিরেক্টরি তৈরি করতে "এমকিডির দির {1,2,3}" রয়েছে।
বুলাত এম।

39

ডায়ার ব্যবহারের জন্য একটি সাধারণ ব্যবহারের ক্ষেত্রে আপনি কেবল সিডি দিয়ে যা করতে পারেন তা হ'ল:

pushd .dirsস্ট্যাকের জন্য বর্তমান ডিরেক্টরি এক্সএক্স যোগ করে । এরপরে, আপনি ব্যবহার করে ঘোরাফেরা করতে পারবেন cdএবং এক্সএক্সএসে ফিরে আসতে আপনি popdডিরেক্টরি গাছের মধ্যে কতটা "দূরে" রয়েছেন তা নির্বিশেষে (একাধিক স্তর, পাশের রাস্তা ইত্যাদি) উপরের দিকে ঝাঁপিয়ে পড়তে পারেন)। ব্যাশ স্ক্রিপ্টগুলিতে বিশেষত কার্যকর।


2
আমি এই বৈশিষ্ট্যটি আমি প্রায়শই ব্যবহার করি বলে মনে করি। কারণ pushd/ popdথেকে স্বতন্ত্রভাবে কাজ করে cd, আপনি এগুলি তার থেকে আরও স্থিতিশীল বুকমার্ক হিসাবে ব্যবহার করতে পারেন cd -
গর্ডন বিন

আমার জন্য এটি সত্য নয়। প্রতিবার আমি সিডি ব্যবহার করলে আমার স্ট্যাকের পরিবর্তন হয়।
হরেন্দ্র সিং

ওহ যে zsh ব্যবহারের কাজ ছিল, যখন আমি বাশ-এ পরিবর্তন করি, তা ঠিক কাজ করে
হরেন্দ্র সিং

4
সিডি -, আইএমওর সাথে তুলনা করার ক্ষেত্রে এটিই একমাত্র সংক্ষিপ্ত উত্তর। ধাক্কা foo কিনা; <এলোমেলো দির পরিবর্তন> পপড = a = এর চেয়ে বেশি সার্থক; সিডি $ এ; <এলোমেলো দির পরিবর্তন> সিডি $ এ ... স্ক্রিপ্টগুলির জন্য আমি প্রাক্তন (পুশড) এর মধ্যে একটি ক্ষুদ্র সিন্ট্যাকটিক সুবিধা দেখতে পাচ্ছি, তবে পরবর্তীকালে ([স্পষ্টভাবে] ভেরিয়েবলগুলি!) স্পষ্টতার ক্ষেত্রে একটি বৃহত উন্নতি। একটি ইন্টারেক্টিভ সেশনের জন্য, আমি মনে করি যে আমি কেবল আমার ডিরেক্টরি হায়ারার্কিটি প্রথম স্থানে সঠিকভাবে সংগঠিত করেছি এবং আমি যদি সিডি / ব্যাক / টু / স্পষ্ট / পথ হারিয়ে ফেলেছি তবে আমি কেবল অনুমান করি।
জানু কিউ পেবলিক

9

pushdএবং popdআপনাকে স্ট্যাকের ডিরেক্টরিগুলি পরিচালনা করতে দেয়।

আপনি যখন pushdকোনও ডিরেক্টরি করেন, আপনি বর্তমান ডিরেক্টরিটি স্ট্যাকের উপরে রাখেন এবং একটি পরামিতি হিসাবে নির্দিষ্ট করে ডিরেক্টরিতে পরিবর্তন করেন।

popd আপনাকে স্ট্যাকের ডিরেক্টরিতে ফিরে যেতে অনুমতি দেবে।

আপনি যদি পুনরাবৃত্তি করেন, ডিরেক্টরি ট্র্যাভারসাল সংরক্ষণের ধরণ হবে এবং আপনি সেগুলিতে যা সঞ্চয় করেছেন সেগুলি থেকে আপনি বিপরীত ক্রমে সংরক্ষিত ডিরেক্টরিগুলিতে ফিরে আসতে পারেন।


6

বাশের জন্য , মূলত: সিডি ব্যবহারের পরিবর্তে pushdব্যবহারিক ব্যবহারের সাথে ডিরেক্টরী পরিবর্তন করতে ব্যবহার করা যায়: পরিদর্শন করা ডিরেক্টরিগুলির ইতিহাস সংরক্ষণ করা হয়েছে (সঠিকভাবে: সজ্জিত) এবং তাদের মধ্যে একটি পরিবর্তন করতে পারে

pushd /home; pushd /var; pushd log

স্ট্যাকের ব্যবহারটি দেখতে dirsএবং সহজে নেভিগেশনের জন্য ("স্ট্যাক-এন্ট্রি" ব্যবহারের সংখ্যা পেতে:

dirs -v

আউটপুট:

me@myhost:/home$ dirs -v
 0  /home
 1  /var
 2  /tmp

এখন এই সংখ্যাগুলি সাথে cdএবং ~মত ব্যবহার করুন :

cd ~1

তবে এই সংখ্যাগুলি এখনই পুনরায় সাজানো হয়েছে এবং অবস্থান "0" পরিবর্তিত হবে, সুতরাং কেবলমাত্র pushdশীর্ষস্থানীয় ডিরেক্টরিতে ডিরেক্টরিটি দুটি বার (বা 0 অবস্থানের উপর একটি ডামি ব্যবহার করুন):

me@myhost:/home$ dirs -v
 0  /home
 1  /home
 2  /var
 3  /tmp

এখন 1..3 সেখানে অবস্থান রাখবে

(বর্তমান ডিরেক্টরিটি স্ট্যাক থেকে প্রকাশ করতে / এটি ইতিহাসের ব্যবহার থেকে মুছে ফেলা popd)


5

একটি ব্যবহারিক ব্যবহার যা আমি পেয়েছি তা হ'ল পুশড এবং পপড ব্যবহার করে ডিরেক্টরিগুলির মধ্যে টগল করা।

ধরুন আমাদের দুটি ডিরেক্টরি ডায়রি 1 এবং ডির 2 রয়েছে এবং আমার কোনও জাইজ কারণে অবিচ্ছিন্নভাবে তাদের মধ্যে টগল করতে হবে।

বর্তমানে আমি সোমদিহে আছি যার দুটি ডিরেক্টরি রয়েছে dir1এবং dir2:

alcohol@alcohol-machine:~/somedir$ ls
dir1  dir2
alcohol@alcohol-machine:~/somedir$ 

এখন আমি স্যুইচ করি dir1

alcohol@alcohol-machine:~/somedir$ cd dir1
alcohol@alcohol-machine:~/somedir/dir1$ pwd
/home/alcohol/somedir/dir1

এখন আমি dir1স্ট্যাক যুক্ত করব এবং এতে স্যুইচ করবdir2

alcohol@alcohol-machine:~/somedir/dir1$ pushd /home/alcohol/somedir/dir2
~/somedir/dir2 ~/somedir/dir1
alcohol@alcohol-machine:~/somedir/dir2$

আপনি দেখতে পাচ্ছেন, আমার কাছে এখন আছে dir2এবং dir1স্ট্যাক রয়েছে এবং আমি বর্তমানে প্রবেশ করছি dir2

এখন আবার ফিরে যেতে dir1, আমি দৌড়াব pushd || popd

alcohol@alcohol-machine:~/somedir/dir2$ pushd || popd
~/somedir/dir1 ~/somedir/dir2
alcohol@alcohol-machine:~/somedir/dir1$ 

ভয়েলা, আমি dir1 এ আছি এবং আমার স্ট্যাকের উপর dir1 এবং dir2 আছে। আবার dir2 এ ফিরে যেতে চালানpushd || popd

alcohol@alcohol-machine:~/somedir/dir2$ pushd || popd
~/somedir/dir1 ~/somedir/dir2
alcohol@alcohol-machine:~/somedir/dir1$ 

ডিরেক্টরিগুলির মধ্যে টগল করার এটি একটি সহজ উপায়। এখন, আপনি কি জানেন, কেন আমাকে ডিরেক্টরিগুলির মধ্যে টগল করতে হবে? একটি ব্যবহারের কেসটি হ'ল, যখন আমি ওয়েব অ্যাপ্লিকেশনটিতে কাজ করি তখন আমার একটি ডিরেক্টরিতে আমার ফাইল এবং অন্য ডিরেক্টরিতে আমার লগ ফাইল থাকে। প্রায়শই অ্যাপ্লিকেশনটি ডিবাগ করার সময় আমাকে লগ ডিরেক্টরিতে পরিবর্তন করতে হবে, সর্বশেষ লগগুলি পরীক্ষা করতে হবে এবং তারপরে কিছু পরিবর্তন করতে এবং অ্যাপ্লিকেশনটি তৈরি করতে মেক ডিরেক্টরিতে ফিরে যেতে হবে।


11
(1) প্রশ্ন জিজ্ঞেস করে, "এর সুবিধা কি কি pushdএবং popdউপর cd -?" আপনি সঠিকভাবে কি cd -করেন তা বর্ণনা করার সাথে সাথে আপনি এই প্রশ্নের উত্তর পরিষ্কারভাবে দেননি । (২) বলার pushd || popdকী আছে? হ্যাঁ, আমি জানি এর cmdA || cmdBঅর্থ রান cmdAএবং এটি যদি ব্যর্থ হয় তবে রান করুন cmdB। আমি জিজ্ঞাসা করছি যে এই প্রসঙ্গে এটি ভাল কি করে।  pushdকোনও যুক্তি ছাড়াই "ডিরেক্টরি স্ট্যাকের শীর্ষ দুটি উপাদানকে অদলবদল করার" অর্থ; ডিরেক্টরিটি স্ট্যাকের বর্তমান ডিরেক্টরি যদি একমাত্র উপাদান হয় তবে এটি ব্যর্থ হয়। সেক্ষেত্রে, popdএছাড়াও ব্যর্থ হবে।
জি ম্যান

3
আমি বিশ্বাস করতে পারি না যে কেউ আপনাকে উঁচু করে তুলেছে! Lifesaver হয়! কি দুর্দান্ত হ্যাক। ধন্যবাদ। টগল করা, আমার মতে, এ জন্য ব্যবহারের ক্ষেত্রে এবং । pushdpopd
সনি

3
দুটি স্বতন্ত্র উপায় pushd || popdআছে যেগুলির মধ্যে ডিরেক্টরিগুলির মধ্যে টগল করার চেয়ে অনেক কম টাইপিংয়ের প্রয়োজন : pushdকোন যুক্তি ছাড়াই এটি করে না। cd -স্পষ্টভাবে শেষ ডিরেক্টরিতে ফিরে যেতে সম্পূর্ণরূপে বিদ্যমান। অতিরিক্তভাবে, প্রশ্নটি pushdওভারের সুবিধার্থে জিজ্ঞাসা করেছিল cd -, যখন এই উত্তরটি স্পষ্টত অসুবিধা ছাড়া আর কিছুই সরবরাহ করে না: আরও টাইপিং।
বেনজামিন রিগস

বাশ-এ, কোনও যুক্তি ছাড়াই, পুশড শীর্ষ দুটি ডিরেক্টরি এক্সচেঞ্জ করে এবং ফিরে আসে ০. আপনার কেন || popdটগল লাগবে? দয়া করে ব্যাখ্যা করুন. (কেবলমাত্র যথেষ্ট পরিমাণে চাপ দেওয়া হয়নি?)
জনি ওয়াং

@ সনি কেবল cd -দুটি ডিরেক্টরিতে টগল করতে ব্যবহার করুন । অতিরিক্ত cdযুক্তি ছাড়াই আপনার হোম ডিরেক্টরিতে ফিরে আসে।
স্টিভ

2

সহজ কথায় বলতে গেলে - যখন আপনাকে 2 টিরও বেশি ডিরেক্টরিতে ন্যাভিগেট করতে হয়, সাধারণত বেশ কয়েকবার পিছনে এবং পিছনে, cd -ঠিক যেমন 2 ফোল্ডারের বাইরে এটি কোনও কাটবে না।

সুতরাং, উদাহরণস্বরূপ, আপনার বাফারের ইতিহাস দেখে বা দীর্ঘ পথটি ট্যাব-সম্পূর্ণ করে আপনি পূর্ববর্তী দীর্ঘ পাথগুলির সাথে পুনরায় আসার চেষ্টা না করে আপনি কেবল গুরুত্বপূর্ণগুলি স্তুপ করে রাখেন এবং প্রয়োজনে আপনার যদি প্রয়োজন হয় তবে স্বাচ্ছন্দ্যে কেবল তাদের সংখ্যায় তাদের কাছে যান। জটিল ডিরেক্টরি কাঠামো এবং দীর্ঘ পাথের মধ্যে ঘোরানো চটজলদি এবং দ্রুত হয়।

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

ডিরেক্টরিগুলি স্ট্যাকিং স্ক্রিপ্টগুলিতে একইভাবে বেশ কয়েকটি ডিরেক্টরি বিস্তৃত ক্রিয়াকলাপগুলির জন্যও ব্যবহার করা যেতে পারে।


1

আমি ডায়ার / পপড / পুশড ব্যবহারটি কিছুটা অস্বস্তিকর অবস্থায় পেয়েছি। নিম্নলিখিত কোডটি .alias এ যুক্ত করে, আমি tcsh এ আমার ব্যক্তিগত সমাধানটি নিয়ে এসেছি

  foreach b (. , - 0 1 2 3 4 5 6 7 8 9 )
    alias p$b       'set a=`pwd`; echo $a >! ~/.mydir'$b
    alias cd$b      'cd "`cat ~/.mydir'$b'`"'
    alias del$b     'rm -v ~/.mydir'$b
    alias home$b    'set a="~"; echo $a >! ~/.mydir'$b
  end
    alias cdl       'grep / ~/.mydir*'

এইভাবে আমি উপবাস করেছি, উদাহরণস্বরূপ, "পি।" working / .mydir ফাইলের মধ্যে বর্তমান কর্মরত ডিয়ার সংরক্ষণ করতে। এবং "সিডি।" যখনই ও যেখানে খুশি আমি সেই দিরকে পুনরুদ্ধার করতে। "ডেল"। সংশ্লিষ্ট ফাইল সরিয়ে দেয়; "বাড়ি." ঘরের ডিয়ারকে সিটি সেট করে (সিডির সমতুল্য; পি।); "সিডিএল" সংরক্ষণিত ডায়ারগুলি কী তা তালিকাবদ্ধ করে। মনে রাখবেন যে আপনি যদি accounts / .mydir $ b এর পরিবর্তে ~ / ড্রপবক্স / .mydir $ বি (বা অন্য কোনও ক্লাউড পরিষেবা যেমন যেমন নিজস্ব ক্লাউড) ব্যবহার করেন তবে আপনি বিভিন্ন অ্যাকাউন্ট এবং মেশিনে আপনার পছন্দের ডায়ার ব্যবহার করার একটি স্মার্ট উপায় পাবেন।


0

আমি এটিকে আমার বাশ_প্রফাইলে এবং .bashrc এর মতো ব্যবহার করছি

vi .bash_profile
alias dirs="dirs -v"
source d.sh
:wq

vi .bashrc
alias dirs="dirs -v"
:wq

vi d.sh
pushd ~/Documents/GIT/seiso-data
pushd ~/Documents/GIT/ewe/EosRegistry
pushd ~/Documents/GIT_LODGING/site-cookbooks
pushd ~/Documents/CHEF_LODGING
pushd  .
:wq

এটি আমার টার্মিনালে সাম্প্রতিক ব্যবহৃত ডিরেক্টরিগুলির মধ্যে আমাকে লাফিয়ে উঠতে সহায়তা করে। :-) আশা করি এটি আপনাকে সিডি ~ স্ট্যাকডনम्बर ব্যবহার করে পুশড বরং পপড ব্যবহার করতে সহায়তা করবে


0

ব্যবহার করে cdএবং cd -আপনাকে কেবলমাত্র আপনার দুটি সম্প্রতি ব্যবহৃত ডিরেক্টরিগুলির মধ্যে টগল করতে দেয়। আপনার "ডিরেক্টরি ওয়ার্কিং সেট" আকার দুটি two

ব্যবহার করে pushd, আপনি আপনার কার্যকারী সেটে একটি নির্বিচারে বৃহত সংখ্যক ডিরেক্টরি রাখতে পারেন।

আমি pushdবরং বেশিরভাগ সময় ব্যবহার করি cd। একবার আপনি এর সাথে সক্রিয় ডিরেক্টরিগুলির একটি স্ট্যাক তৈরি করে ফেললে pushd directory_name, তারপরে আপনি সারা দিন তাদের মধ্যে ঝাঁপিয়ে পড়তে পারেন pushd ~#

pushd dir1
pushd ../dir2
pushd /full/path/to/dir3

# There are now three directories in the stack.

pushd ~3
pushd ~2

# The same three directories are still on the stack, 
# just in a different order.

আমি popdখুব কমই ব্যবহার করি , কেবল যখন আমি স্ট্যাক থেকে কোনও ডিরেক্টরি সরিয়ে ফেলতে চাই যখন আমি জানি যে আমি সেই ডিরেক্টরিটি ব্যবহার করেছি।

ডিরেক্টরিতে যান এবং স্ট্যাক থেকে এটি অপসারণ করুন:

popd ~2

বর্তমান ডিরেক্টরিতে থাকুন এবং স্ট্যাক থেকে অন্য ডিরেক্টরি সরান:

popd +2

আপনি একটি কার্য শৈলীর সাথে সমাপ্ত হন যা একাধিক টার্মিনাল উইন্ডো বা ট্যাব খোলা (প্রতিটি ডিরেক্টরি যা আপনি সক্রিয়ভাবে কাজ করছেন তার জন্য একটি) সমান, তবে সমস্ত একই টার্মিনালে। এটি স্ক্রিন রিয়েল এস্টেট সংরক্ষণ করে, প্লাস, কারণ ডিরেক্টরি পাথগুলি সমস্তই একটি শেলের মধ্যে উপলভ্য, আপনি যেমন কিছু করতে পারেন:

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

উদাহরণ:

cp ~2/myfile.txt ~4
less ~2/myfile.txt

ইন tcsh(কিন্তু bash), আপনি এমনকি একটি ফাইলে আপনার ডিরেক্টরির স্ট্যাক সংরক্ষণ করে পুনরুদ্ধার করতে পারেন।

সংরক্ষণ:

dirs -S ~/dirstack

পুনঃস্থাপিত করো:

dirs -L ~/dirstack

অন্যথায়, শুধু প্রতিস্থাপন ~মধ্যে bashদিয়ে উদাহরণ =ব্যবহারের জন্য tcsh

pushd =2
popd =4
popd +1

0

পুশড / পপড একটি সাধারণ ধারণা যা আমাকে বুঝতে কিছুটা সময় নিয়েছিল কারণ লোকেরা এই আদেশগুলি 'কমান্ড ডিরেক্টরী স্ট্যাককে ম্যানিপুলেট করে' যেটি আমার মতে বিভ্রান্তিকর করে এই আদেশগুলি সংজ্ঞায়িত করে শেখানোর প্রবণতা বোধ করে।

আমি এটিকে অন্যভাবে দেখি:

পুশড [ফোল্ডার_নাম] - সিডি করবে [ফোল্ডার_নাম] এবং গন্তব্যটি যা ডায়ার স্ট্যাকের মধ্যে [ফোল্ডার_নাম] নথিভুক্ত করবে যখন স্ট্যাকের শীর্ষস্থানীয় ডিরেক্টরিটি সর্বদা আপনার বর্তমান দির থাকবে

পপড - প্রথমে আপনাকে স্টোরের শীর্ষে থাকা ডিরেক্টরি রেকর্ডে সিডি করবে এবং তারপরে স্ট্যাক থেকে সরিয়ে ফেলবে

ডায়ার্স - দির স্ট্যাকটি মুদ্রণ করবে (বাম দিকের প্রবেশদ্বারটি বর্তমান ডিরেক্টরি (স্ট্যাকের শীর্ষস্থানীয়) যেখানে ডিয়ার ডিবি হিসাবে বিবেচিত হবে

সুতরাং 2 সবচেয়ে জনপ্রিয় ব্যবহারের কেস হ'ল:

কেস 1 ব্যবহার করুন: পুশড এবং পপড ব্যবহার করে নেভিগেট করা

root@mypc:/main/$ ls
dir1  dir2  dir3  dir4

root@mypc:/main/$ dirs   # prints the current stack
/main

root@mypc:/main/$ pushd dir1    # Will cd to dir1 and document dir1 in dir stack, stack is now:
/main/dir1 /main 
root@mypc:/main/dir1$    # I am now in /main/dir1

root@mypc:/main/dir1$    # Now let's go wild and document whatever I want
root@mypc:/main/dir1$ pushd ../dir2 
root@mypc:/main/dir2$     # Woo I am in /main/dir2
root@mypc:/main/dir2$ pushd ../dir3 
root@mypc:/main/dir3$     # Woo I am in /main/dir3
root@mypc:/main/dir3$ pushd ../dir4 
root@mypc:/main/dir4$     # Woo I am in /main/dir4
root@mypc:/main/dir4$ dirs   # Now dir stack is:
/main/dir4 /main/dir3 /main/dir2 /main/dir1 /main

আসুন বলি যে আমি উপরেরটি করেছি যেহেতু আমি যে নথিগুলি নথিভুক্ত করেছি সেই ফোল্ডারে ফিরে যেতে চাই!

মনে রাখবেন যে আমি নিজে সিডি করলে আমি উপরের দির স্ট্যাক প্রবেশকে প্রভাবিত করব (যা সর্বদা বর্তমান দির)

root@mypc:/main/dir4$ cd ..   # Now dir stack is:
# (note that /main appear in the leftmost as well which is the top of the stack)
/main /main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$ 

এখনই পিছন দিকে নেভিগেট করা যাক:

root@mypc:/main$ popd
root@mypc:/main$     # Still in /main since it was at the top of the dir stack
root@mypc:/main$ dirs    # Stack is now:
/main/dir3 /main/dir2 /main/dir1 /main

root@mypc:/main$ popd
root@mypc:/main/dir3$ popd    # Woo in dir3 now, about to navigate to dir2
root@mypc:/main/dir2$ popd    # Woo in dir2, about to navigate to dir1
root@mypc:/main/dir1$ dirs    # Stack is now:
/main

আমি যে যা ডায়ার চাইছি তা আবার নথিভুক্ত করতে পারি এবং তারপরে ম্যানুয়ালি অন্য দিরে নেভিগেট করতে পারি তবে আমি স্ট্যাকের ভিতরে sertedোকানো নথিভুক্ত দিরটিতে সহজেই ফিরে আসতে সক্ষম হব।

কেস 2 ব্যবহার করুন: সংখ্যার স্ট্যাক সূচক ব্যবহার করে নেভিগেট করা

বলি আমি ধাক্কা dir4 dir3 dir2 dir1 ব্যবহার করে ধাক্কা দিয়েছি, এখন dir -v চলছে তা দেখাবে:

root@mypc:/main$ dirs -v
 0  /main/dir1  (this is the current dir you are in always)
 1  /main/dir2
 2  /main/dir3
 3  /main/dir4

এখন আপনি যে কোনও লিনাক্স অপারেশন করতে পারেন যাতে স্ট্যাক সূচকটি ব্যবহার করে ডিরেক্টরি অন্তর্ভুক্ত থাকে:

root@mypc:/main$ cp ~2/temp.txt ~3/new_temp.txt    # this will run in the background, something like:
# cp /main/dir2/temp.txt  /main/dir3/new_temp.txt

আপনি দির স্ট্যাক থেকে একটি নির্দিষ্ট এন্ট্রি মুছতে পারেন:

root@mypc:/main$ popd ~4

আশা করি যে "ডকুমেন্টিং" শব্দটি ব্যবহার করে বা একটি ধরণের ডিবি ধারণাটি সহজ করার সাথে সাথে দির স্ট্যাকের কথা ভাবেন!

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