ব্যাশ শেলের মধ্যে দ্রুত ডিরেক্টরি নেভিগেশন


119

আমি প্রায়শই এমন ডিরেক্টরিগুলির মধ্যে স্যুইচ করতে চাই যা পুরোপুরি সম্পর্কিত নয়, যেমন /Project/Warnest/docs/এবং ~/Dropbox/Projects/ds/test/

তবে আমি cd /[full-path]/সব সময় টাইপ করতে চাই না । পূর্বে কাজ করা ডিরেক্টরিতে স্যুইচ করার জন্য কি কোনও শর্টকাট আদেশ আছে?

একটি সমাধান যা আমি ভাবতে পারি তা হ'ল আমার bash .profileঘন ঘন ব্যবহৃত ডিরেক্টরিগুলির জন্য পরিবেশের ভেরিয়েবল যুক্ত করা এবং cdসেগুলি ভেরিয়েবলগুলি ব্যবহার করে।

তবে এর কি আর কোনও সমাধান আছে?


প্রতীকী লিঙ্কগুলিও এর জন্য কার্যকর হতে পারে। en.wikipedia.org/wiki/...
user606723

উত্তর:


135

আপনি যদি কেবল দুটি ডিরেক্টরিতে স্যুইচ করেন তবে আপনি cd -পিছনে পিছনে যেতে ব্যবহার করতে পারেন।


13
এত দিন আমাকে কীভাবে এড়িয়ে চলেছে তা একটি রহস্য। এই দুর্দান্ত টিপটির জন্য আপনাকে অনেক ধন্যবাদ।
মিঃ শিকাড্যান্স

3
+1 অবশ্যই আমার প্রিয় একটি এবং এটি একরকম অনেক বিশেষজ্ঞ 'মিস' করেছেন।
মাইকেল ডুরান্ট

62

একটা শেল পরিবর্তনশীল CDPATHমধ্যে bashএবং kshএবং cdpathzsh:

CDPATH    The search path for the cd command. This is a colon-separated
          list of directories in which the shell looks for destination
          directories specified by the cd command.

সুতরাং আপনি আপনার। / .Bashrc এ সেট করতে পারেন:

export CDPATH=/Project/Warnest:~/Dropbox/Projects/ds

তারপরে cd docsএবং cd testআপনাকে প্রথমে পাওয়া যেমন ডিরেক্টরিতে নিয়ে যাবে। (আমার অর্থ, বর্তমান নামের ডিরেক্টরিতে একই নামের একটি ডিরেক্টরি উপস্থিত CDPATHথাকলেও এখনও তাদের সাথে পরামর্শ করা CDPATHহবে given যদি প্রদত্ত নামের সাথে উপ-ডিরেক্টরি সম্বলিত আরও ডিরেক্টরি থাকে তবে প্রথমটি ব্যবহার করা হবে))


16
এটি উল্লেখ করা উচিত যে সাধারণভাবে, আপনি প্রথম এন্ট্রিটি $CDPATHহতে চান .(একটি স্পষ্টভাবে প্রবেশ, অর্থাত্ :কাজ করে)। অন্যথায় আপনি একটি অদ্ভুত আচরণের সাথে সমাপ্ত হবেন যেখানে CDPATHডায়াররা বর্তমান কার্যনির্বাহী ডিরেক্টরিতে যে ডিরেক্টরিগুলি সম্ভবত আপনি চান না তার চেয়ে বেশি পছন্দ করে।
jw013

4
আমি প্রায় একই জিনিস, কিন্তু ছাড়া export। এইভাবে, CDPATHসম্ভাব্য অদ্ভুত বা ক্ষতিকারক প্রভাবগুলির সাথে স্ক্রিপ্টগুলিতে রফতানি করা হয় না। আরও আলোচনা এবং উদাহরণের জন্য এখানে দেখুন ।
টেলিমাচাস

"বাশ এবং কেএসএড এবং সিডিপাথ ইন জেডএস" ... এবং টিসিএস-এ (কেবলমাত্র সুপার ইউজারের উপর ভিত্তি করে একটি প্রশ্নের উত্তর দিয়েছি এবং এসই তে অনুরূপ উত্তর খুঁজতে গিয়ে এটি পেয়েছি)।
হেনেস

এটি POSIX- নির্দিষ্ট, আমি মনে করি। কমপক্ষে, এর জন্য পসিক্স cdএটি উল্লেখ করে।
মাইকজার্ভ

48

আপনি যা চেষ্টা করতে পারেন সেটিকে অটোজাম্প বলে একটি সরঞ্জাম । এটি এটির ওরফে ( jডিফল্টরূপে) কলগুলির একটি ডাটাবেস রাখে এবং আপনি কোথায় যেতে চান সে সম্পর্কে বুদ্ধিমান সিদ্ধান্ত নেওয়ার চেষ্টা করে। উদাহরণস্বরূপ যদি আপনি প্রায়শই টাইপ করেন:

j ~/Pictures

একটি চিমটি এ পেতে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

j Pic

এটি ডেবিয়ান এবং উবুন্টু উপলভ্য, এবং প্রতি-ব্যবহারকারী ভিত্তিতে ~/.bashrcবা ~/.zshrcডিফল্টরূপে অন্তর্ভুক্ত।


5
অটোজাম্প সম্ভবত এটির জন্য সেরা হাতিয়ার, সাধারণ ডায়ারগুলির ডাটাবেস তৈরি করতে কিছুটা সময় নেয় তবে এটি একবার মনে করে আপনি এটি খুঁজে না পেয়ে দেখতে পারবেন না। আমি জানি আমি যখনই অন্য কারও কম্পিউটারে থাকি তখন আমি পঙ্গু বোধ করি।
quodlibetor

1
ধন্যবাদ এই সরঞ্জামটি ভালবাসি! এবং যদিও cd -আপনি এটি ইতিমধ্যে জানেন না তবে তা জানা সহজ, তবে আমি মনে করি এটি বর্তমান শীর্ষ উত্তরের চেয়ে অনেক ভাল সমাধান।
ব্যবহারকারী

কোন সিস্টেমে সিস্টেম-ওয়াইড ইনস্টল করা হয়েছে?
ctrl-alt-delor

1
@richard এটি apt-get install autojumpসিস্টেমের ব্যাপী ইনস্টলেশন জন্য একটি প্যাকেজ হিসাবে (যেমন উবুন্টুতে, তবে আরও অনেকের জন্য তাদের পৃষ্ঠায় নথিবদ্ধ হিসাবেও) উপলব্ধ, তবে প্রতিটি ব্যবহারকারীর এটিকে তাদের শেল পরিবেশে লোড করা দরকার যাতে এটি সিডিকে ওভাররাইড করতে পারে ট্র্যাক রাখতে আপনি কোথায় যাচ্ছেন
নীলামকবি

অটোজাম্পে কাজ করার জন্য বলাই গুরুত্বপূর্ণ source /usr/share/autojump/autojump.sh~ / .bashrc এ যুক্ত করা উচিত ।
পাবলো এ

39

যদি এটি সংখ্যক ডিরেক্টরি থাকে তবে আপনি pushdতাদের মধ্যে ঘোরানোর জন্য ব্যবহার করতে পারেন :

# starting point
$ pwd
/Project/Warnest/docs
# add second dir and change to it
$ pushd ~/Dropbox/Projects/ds/test
~/Dropbox/Projects/ds/test /Project/Warnest/docs
# prove we're in the right place
$ pwd
~/Dropbox/Projects/ds/test
# swap directories
$ pushd
/Project/Warnest/docs ~/Dropbox/Projects/ds/test

ভিন্ন cd -, আপনি এটি দুটিরও বেশি ডিরেক্টরিতে ব্যবহার করতে পারেন


নোয়াচের পরামর্শ অনুসরণ করে আমি এখন এটি ব্যবহার করছি:

function pd()
{
    if [[ $# -ge 1 ]];
    then
        choice="$1"
    else
        dirs -v
        echo -n "? "
        read choice
    fi
    if [[ -n $choice ]];
    then
        declare -i cnum="$choice"
        if [[ $cnum != $choice ]];
        then #choice is not numeric
            choice=$(dirs -v | grep $choice | tail -1 | awk '{print $1}')
            cnum="$choice"
            if [[ -z $choice || $cnum != $choice ]];
            then
                echo "$choice not found"
                return
            fi
        fi
        choice="+$choice"
    fi
    pushd $choice
}

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

# same as pushd +1
$ pd 1

# show a prompt, choose by number
$ pd
 0 ~/Dropbox/Projects/ds/test
 1 /Project/Warnest/docs
 2 /tmp
? 2
/tmp ~/Dropbox/Projects/ds/test /Project/Warnest/docs

# or choose by substring match
$ pd
 0 /tmp
 1 ~/Dropbox/Projects/ds/test
 2 /Project/Warnest/docs
? doc
/Project/Warnest/docs /tmp ~/Dropbox/Projects/ds/test

# substring without prompt
$ pd test
~/Dropbox/Projects/ds/test /Project/Warnest/docs /tmp

স্পষ্টতই এটি কেবল স্ট্যাকের মধ্য দিয়ে ঘোরানোর জন্য এবং নতুন পাথ যুক্ত করতে পরিচালনা করে না - সম্ভবত আমার এটির নামকরণ করা উচিত।


6
ওহ, আমি ট্র্যাভারসাল সম্পর্কে pushdএবং তার popdজন্য জানতাম , তবে
এতক্ষণ

14

আমি এই aliasসিডিগুলি করতে বাশার্কে ব্যবহার করি ।
যেমন:

alias wdoc='cd ~/Project/Warnest/docs'
alias dstest='cd ~/Dropbox/Projects/ds/test'

বাশার্ক কি কোন প্রোফাইলে ফাইল আছে? আমার এই লাইনগুলি যুক্ত করা দরকার?
saiy2k

~/.bashrcবা /etc/bash.bashrc। আমি এর .profileআগে ব্যবহার করিনি, তাই তাদের মধ্যে সম্পর্কটি জেনে নেই :-(
ফেলিক্স ইয়ান

আপনি যখন টার্মিনাল খুলবেন তখন স্ক্রিপ্ট বাশার্ক শুরু হবে। প্রারম্ভের সাথে প্রোফাইল।

এই লাইনগুলি আমার সাথে যুক্ত করেছে .bash_profileএবং এটি দুর্দান্ত কাজ করে .. thx :)
saiy2k

আমার নিয়মিত বেশ কয়েকটি নির্দিষ্ট প্রকল্প ফোল্ডার রয়েছে, সেগুলি সেট আপ এবং বজায় রাখার এটি সহজতম উপায়। এছাড়াও, আমার জন্য, এর ফলাফলগুলি এখানে সমস্ত সমাধানগুলির টাইপ করে নিখুঁত ন্যূনতম অক্ষর তৈরি করে। চুম্বন! :-)
মুডবুম

11

আমি একটি স্ক্রিপ্ট পেয়েছি (সাধারণত acd_funch.sh নামে পরিচিত) আমার জন্য এই সমস্যাটি সমাধান করেছে। cd --এটি ব্যবহার করে আপনি যে 10 টি ডিরেক্টরি ব্যবহার করেছেন তা দেখতে টাইপ করতে পারেন। এটি দেখতে এরকম কিছু দেখাবে:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

~/Music/thirddirশুধু টাইপ করতে যেতেcd -2

তথ্যসূত্র

দ্রষ্টব্য: এই স্ক্রিপ্টটি মূলত একটি লিনাক্স গেজেট নিবন্ধে প্রকাশিত হয়েছিল যা এখানে উপলভ্য: acd_func.sh - পরিদর্শন করা ডিরেক্টরিগুলির নামের ইতিহাস রাখতে, প্রদর্শন এবং অ্যাক্সেসের জন্য বাশের সিডি প্রসারিত করে


খুব একই স্ক্রিপ্ট লিনাক্স গেজেটে, ইস্যু # 109, ডিসেম্বর 2004 এ প্রকাশিত হয়েছিল ।
সার্জ Stroobandt

@ ডিয়ান লিঙ্কটি একটি মিউজিক ভিডিওতে যায় এবং বলে যে জিওসিটি বন্ধ হয়ে গেছে।
কিছু কিছু 15

1
পছন্দ করুন
ডিন

ইতিহাস |
গ্রেপ

10

ব্যাশে cdable_varsশেল বিকল্পটি ব্যবহার করে দেখুন। আপনি এটি দিয়ে স্যুইচ করুন shopt -s cdable_vars

তারপরে আপনার ভেরিয়েবল সেট করা দরকার export dir1=/some/path। এবং অবশেষে cd dir1, ইত্যাদি। তারপর আপনি ~/.bashrcএটি আটকে রাখতে আপনার এটি রাখতে পারেন।


10

"পুশড- এন " ব্যবহার করুন (ধরে নেওয়া উচিত আপনি ব্যাশ ব্যবহার করেন)।

আপনার ~ / .bashrc এ যুক্ত করুন:

pushd -n /Project/Warnest/docs/
pushd -n ~/Dropbox/Projects/ds/test/

তারপর,

cd ~ আপনার বাড়ি,

cd ~1 হয় ~/Dropbox/Projects/ds/test/

cd ~2 হয় /Project/Warnest/docs/

আপনি ব্যবহার করতে পারেন ~1, ~2যেমন ঠিক একই ভাবে ইত্যাদি ~


7

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

যদি এটি একটি ছোট স্থির তালিকা থাকে তবে সাধারণ উপকরণ স্থাপন করা (যেমনটি ফেলিক্স ইয়ান প্রস্তাবিত) ব্যবহার করা সহজ be

আপনি যদি আরও সাধারণীকরণের সমাধান খুঁজছেন (যেমন, সময়ের সাথে সাথে অনেকগুলি ভিন্ন ডিরেক্টরি) পরিবর্তিত হয়ে থাকে তবে আমি পুশড এবং পপড ব্যবহার করব (অব্যবহৃত পরামর্শ হিসাবে)। আমি ব্যক্তিগতভাবে ডিফল্ট পুশ / পপডকে ব্যবহার করা শক্ত বলে মনে করি, বিশেষত আপনি অনেকগুলি ফোল্ডারের মধ্যে স্যুইচিং শুরু করার সাথে সাথে; তবে আমি কয়েকটি টুইট লিখেছি যা এটি আমার পক্ষে আরও সহজ করে তুলেছে। আপনার বাশার্কে নিম্নলিখিতগুলি যুক্ত করুন:

alias dirs='dirs -v'
pd () 
{ 
    if [ "$1" ]; then
        pushd "${1/#[0-9]*/+$1}";
    else
        pushd;
    fi > /dev/null
}
  • আপনি কোথায় ছিলেন তা মনে করে নতুন ফোল্ডারে ঝাঁপিয়ে পড়ার জন্য pd(এর সংক্ষিপ্ত রূপ হিসাবে pushd) ব্যবহার করুন ।
  • dirsসংরক্ষিত ডিরেক্টরিগুলির তালিকা দেখতে ব্যবহার করুন ।
  • pd 3ডিরেক্টরি 3 নম্বর লাফাতে ব্যবহার করুন ।

ব্যবহারের উদাহরণ:

$ PS1='\w\$ '   ## just for demo purposes
~$ pd ~/Documents/data
~/Documents/data$ pd ../spec
~/Documents/spec$ pd ~/Dropbox/Public/
~/Dropbox/Public$ pd /tmp
/tmp$ pd /etc/defaults/
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 2
~/Dropbox/Public$ dirs
 0  ~/Dropbox/Public
 1  ~/Documents/spec
 2  ~/Documents/data
 3  ~
 4  /etc/defaults
 5  /tmp
~/Dropbox/Public$ pd 4
/etc/defaults$ dirs
 0  /etc/defaults
 1  /tmp
 2  ~/Dropbox/Public
 3  ~/Documents/spec
 4  ~/Documents/data
 5  ~
/etc/defaults$ pd 3
~/Documents/spec$ popd
~/Documents/data ~ /etc/defaults /tmp ~/Dropbox/Public
~/Documents/data$ 

6

নিম্নলিখিতটি আমি যে এক ক্ষেত্রে এটি পরীক্ষা করেছি তার উপরে কাজ করার জন্য প্রদর্শিত হয়েছিল এবং আপনি কেবলমাত্র আপনার ডিরেক্টরি নামগুলি ~ / বুকমার্কগুলিতে সিমলিংক হিসাবে ফেলে দিতে পারেন:

mkdir "$HOME/Bookmarks"
ln -s /tmp "$HOME/Bookmarks/testdir"

function ccd() { cd $(readlink "$HOME/Bookmarks/$1") ; }

ccd testdir && echo $PWD
# gives /tmp

সেই সিসিডি () ফাংশনটি টার্মিনাল প্রম্পটে টাইপ করতে হবে বা অন্য কোথাও? আপনি দয়া করে ব্যাখ্যা করতে পারেন?
saiy2k

1
@ সায়ি 2 কে: দুঃখিত, হ্যাঁ functionলাইন আপনার .bashrc মধ্যে যায় (আপনার টার্মিনাল পরীক্ষা করার জন্য আর টাইপ করতে পারেন, কিন্তু এটি সর্বস্বান্ত থাকবেন কারণ যখনই আপনি যে উইন্ডোটি বন্ধ), লাইন আগে "testdir |" এর পরীক্ষা ক্ষেত্রে সেট আপ জন্য একটি নাম হয়ে /tmp, এবং শেষ পংক্তিটি এটি পরীক্ষা করে কিনা তা পরীক্ষা করে।
উলিখ শোয়ার্জ

6

আপনি জে 2 চেষ্টা করার চেয়েও খারাপ করতে পারেন ।

পুনরায় পড়া থেকে:

একটি জটিল ডিরেক্টরি গাছের আশেপাশে সিডি-ইনগ্রে প্রচুর সময় ব্যয় করবেন?

জে আপনি কোথায় ছিলেন এবং আপনি সেখানে কতটা সময় ব্যয় করেছেন সে সম্পর্কে নজর রাখে এবং আপনি যে ডিরেক্টরিগুলি ব্যবহার করেন সেগুলি থেকে লাফ দেওয়ার একটি সুবিধাজনক উপায় সরবরাহ করে।

আমি এটি ব্যাপকভাবে ব্যবহার করি এবং এটির সুপারিশ করি।


5

আমি zsh ব্যবহার করে পরামর্শ দেব , বেশিরভাগ ক্লাইম প্রোগ্রামের জন্য ডিরেক্টরি, ফাইল এবং এমনকি বিকল্পগুলির জন্য এটি শেলটি খুব ভাল TAB সমাপ্তি হিসাবে।

আমি এখন বছরের পর বছর ধরে এই শেলটি ব্যবহার করে আসছি এবং যদি কার্যকারিতাটি না যায় তবে আমি মিস করতাম। জেডএস স্ক্রিপ্ট করা অনেক মজাদার, প্রচুর পরিমাণে ওয়ান-লাইনার যা আপনাকে প্রতিদিন সাহায্য করতে পারে।


টিএবি সম্পূর্ণকরণের জন্য জেডএসে পরিবর্তন করার দরকার নেই কারণ বাশের সব কিছু একই রকম। অন্যান্য কার্যকারিতার জন্য সম্ভবত তবে এটির জন্য নয়।
পিয়ার স্ট্রিটজিংগার

1
@ পিয়ার স্ট্রিটজিঞ্জার বাশ বেস বেস ৪.০-তে এই জাতীয় কার্যকারিতা প্রবর্তন করেছিল, তবে zsh এর তুলনায় এটি এখনও অনেক পিছনে। "সমস্ত একই" বলা অবশ্যই ভুল।
পোলেমন

আচ্ছা zsh হল খালি übershell তবে কেবল ট্যাব সমাপ্তির জন্য পরিবর্তনের দরকার নেই (বাশের জন্য প্রশ্ন জিজ্ঞাসা করা হয়েছিল)। এছাড়াও বাশ 4.0 প্রায় 3 বছর আগে চালু হয়েছিল ...
পিয়ার স্ট্রিটজিঞ্জার

5

আমার অভিজ্ঞতায় শেলটিতে নেভিগেটের সবচেয়ে বড় গতিবেগ হ'ল এর ইতিহাস অনুসন্ধানের কার্যকারিতাটি ব্যবহার করা। বাশে আপনি কমান্ডের ইতিহাসে পিছনে সন্ধান করতে পারেন Ctrl+ চাপুন Rএবং কিছু প্যাটার্নে টাইপ করুন। তারপরে সেই প্যাটার্নটি আপনার ইতিহাসের পূর্ববর্তী এন্ট্রিগুলির সাথে মেলে - এটি cdকমান্ড বা অন্যান্য ক্রিয়াকলাপ হতে পারে - এবং আপনার টাইপ করার সময় পরামর্শ দেওয়া হয়। প্রস্তাবিত কমান্ডটি আবার চালাতে কেবল এন্টার চাপুন। এটি reverse-search-historyবাশে বলা হয় এবং আমি এটি পছন্দ করি। এটি আমাকে অনেকগুলি কীট্রোক বাঁচায় এবং আমার অভ্যন্তরীণ স্মৃতিকে বাঁচায়।

এটি একটি ভাল জিনিস কারণ আপনাকে কেবল একটি কমান্ডের কিছু ছোট অংশ মনে রাখতে হবে, যেমন দুটি ইতিহাসের এন্ট্রি এবং এর মধ্যে আলাদা করতে Dropবা পছন্দ Waকরতে ।cd ~/Dropbox/Projects/ds/test/cd /Project/Warnest/docs/


5

আমি এই এলিয়াসগুলিও ব্যবহার করি (এগুলিকে ~ / .bashrc এ যুক্ত করুন):

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

তাদের সাথে উচ্চ ডিরেক্টরিতে যাওয়া খুব দ্রুত (এখনও এটি নেভিগেশনের অর্ধেকটি সমাধান করে)।


1
এগুলি সহায়ক উপকরণ, তবে আমি ওপি'র প্রয়োজনীয়তার সাথে মেলে কিনা তা সম্পূর্ণরূপে নিশ্চিত নই। এগুলি কীভাবে ওপি-র ইস্যুতে সরাসরি সহায়ক হতে পারে তা বোঝাতে আপনি নিজের উত্তরের প্রসারকে বিবেচনা করতে পারেন।
হ্যালোগোস্ট 11'14

4

যদি আপনি zsh ব্যবহার করছেন:

  • আপনাকে টাইপ করতে হবে না cd, কেবল ডিরেক্টরি পথ টাইপ করুন ( /foo/bar/baz<Enter>সমান cd /foo/bar/baz<Enter>)

    auto_cdসেট করতে বিকল্পের প্রয়োজন

  • আপনি Tabকী দিয়ে সংক্ষিপ্ত পথগুলি প্রসারিত করতে পারেন (এতে /u/sh/pi<Tab>প্রসারিত হয় /usr/share/pixmaps; ফাইলের নামের জন্যও কাজ করে)

3
বাশ 4 লাভ করেছে shopt -s autocd, সুতরাং এটি আর কোনও zsh- কেবল ধার্মিকতা নেই।
গিলস

4

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

এক্সডি - এক্সট্রা ফাস্ট ডিরেক্টরি পরিবর্তক http://xd-home.sourceforge.net/xdman.html

কিছুটা বিশ্রী হ'ল আপনাকে এটিকে ব্যাশ প্রোফাইলে ম্যাপ করতে হবে বা এটি কেবল ডিরেক্টরিকে আউটপুট দেয় বলে অনুরূপ

# function to do `cd` using `xd`
# -g turns generalized directory search command processing on
# which improves the whole thing a bit
f() 
{
        cd `/usr/bin/xd -g $*`
}

আপনি যেমন কাজ করতে পারেন:

# change to /var/log/a* (gives you a list to choose from)    
f vla
# to skip the list and go directly to /var/log/apache2
f vlapach

f() { cd "$(xd -g "$@")"; }যুক্তিগুলির মধ্যে স্পেসড ডিরেক্টরি এবং স্পেসগুলি সঠিকভাবে পরিচালনা করতে ফাংশনটি পরিবর্তন করুন xd(আপনার সম্ভবত পথের প্রয়োজন নেই)। আপনি যদি xdঅন্য কোনও উপায়ে কখনও ব্যবহার না করেন তবে আপনি বিকল্পভাবে করতে পারেন xd() { cd "$(command xd -g "$@")"; }(বিকল্পভাবে, /usr/bin/xdএর জায়গায় ব্যবহার করুন command xd- আপনি command xd …যদি এড়াতে চান তবে আপনি সর্বদা চালাতে পারেন)।
অ্যাডাম কাটজ

4

আপনার কখনই শেলের মধ্যে পুরো পথ টাইপ করা উচিত নয়। আপনি সর্বদা ব্যবহার করতে পারেন:

soffice /P*/W*/*/mydoc*

পরিবর্তে

soffice /Project/Warnest/docs/mydoc.odt

1
এটি ট্যাব-সমাপ্তির মতো তবে প্রতিটি দিক থেকে খারাপ
মাইকেল মরোজেক

আপনি কেবল ট্যাব সমাপ্তি দিয়ে কীপ্রেসিংয়ের পরিমাণটি কীপ্রেসিংয়ের সাথে সম্পন্ন করতে পারবেন না যদি না কেবল প্রজেক্টে পি দিয়ে শুরু হওয়া ফাইল থাকে etc. ইত্যাদি এছাড়াও আপনাকে প্রতিবারের সমাপ্তির জন্য অপেক্ষা করতে হবে, * আপনার অপেক্ষা করার দরকার নেই using
gena2x

আমার মনে হয় আপনার পেছনের দিকটি রয়েছে - আপনি P*কেবলমাত্র প্রজেক্টের পি দিয়ে শুরু হওয়া ফাইল না হলে তা করতে পারবেন না Tab ট্যাব সমাপ্তিটি চক্র করতে পারে (বেশিরভাগ শেলসে ডিফল্টরূপে; আপনাকে ট্যাবে পুনরায় প্রত্যাবর্তন করতে হবে menu-complete) এবং সাধারণ ক্ষেত্রে তাত্ক্ষণিকভাবে সমাধান হয় এর মতো, এর জন্য আর কোনও অপেক্ষার অপেক্ষা নেই
মাইকেল মরোজেক

'আপনি এটি করতে পারবেন না' সম্পর্কিত - আপনি করতে পারেন, চেষ্টা করতে পারেন, আপনি যদি না ভাবেন তবে পুরো পয়েন্টটি মিস করছেন। প্রতিধ্বনি / u * / বি * / জি ++
জেনা 2x

1
আমি আপনার বোঝার অর্থটি বুঝতে পেরেছি, যতক্ষণ না আপনি নিশ্চিত হয়ে গেছেন যে আপনি একটি দ্ব্যর্থহীন পথটি টাইপ করেছেন, তবে এমন এক /P*/W*/*/mydoc*শব্দের মতো শোনা যাচ্ছে যে কোনও দিন আপনি সেই গ্লোবটির সাথে মেলে এমন কোনও ফাইল তৈরি করার আগে ঘটেনি, এবং হঠাৎ আপনি শেষ করবেন একবারে উভয় খোলার। /u*/*/g++চিত্তাকর্ষকভাবে কয়েকটি চরিত্র, তবে আশা করা যায় যে আমার মূল ফোল্ডারের সাথে শুরু হওয়া কোনও সাব-ফোল্ডারের মধ্যে অন্য কোনওটির uনাম দেওয়া হয়নি g++। (একটি সুন্দর আপস হিসাবে, কিছু শেলের মধ্যে আপনি
জায়গাগুলি জায়গাগুলি

3

OLDPWDআইআইইই 1003.1 (পসিক্স) অনুযায়ী পরিবেশগত পরিবর্তনশীল এছাড়াও রয়েছে , প্রতিটি বারের cdকাজ ডিরেক্টরিটি (কৌতূহলী ব্যক্তিদের জন্য, আইইইই 1003.1-2008 এর পৃষ্ঠা 2506 এর 80244 লাইন) পরিবর্তন করে পূর্ববর্তী ওয়ার্কিং ডিরেক্টরিটি আপডেট করা উচিত ।


3

এছাড়াও এটির জন্য বিশেষত একটি "ডাব্লুসিডি" অ্যাপ্লিকেশন তৈরি করা হয়েছে (এছাড়াও আমি সাইগউইনকে পোর্ট করেছিলাম, যেহেতু আমি এতে আছি)। আপনি এটির সাথে শর্টকাট, ডায়ারের বুকমার্ক তৈরি করতে পারেন। ওয়াইল্ড কার্ড সমর্থন করে। / Usr / share / wcd এ ম্যান পেজ এবং ডক্সটি পড়তে অনেক সহায়তা করা উচিত।

http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html


3

ডিরেক্টরিকে বুকমার্ক করার জন্য সর্দারস সবচেয়ে কার্যকর সরঞ্জাম: http://www.youtube.com/watch?v=uWB2FIQlzZg


এটি কি এমন পণ্য যা আপনার সাথে যুক্ত?
কাজার্ক

আমাকে সিডারগসে নির্দেশ করার জন্য ধন্যবাদ কেবল sudo apt-get cdargsউবুন্টুতে। ইউটিউব ভিডিওটি বিটিডাব্লু সত্যিই খারাপ তবে টুল দুর্দান্ত।
ডেভিডজি

3

ফাস্টসিডি ব্যবহার করে দেখুন ( https://github.com/frazenshtein/fastcd ) এটি হুক সেট করে যা বাশ থেকে ডিরেক্টরিগুলি দেখার জন্য রেকর্ড করে। এবং স্ক্রিপ্টটিকে "জে" ওরফে হিসাবে সেট করে, যা আপনাকে দ্রুত সিডি করার দক্ষতার সাথে সর্বশেষ পরিদর্শন করা ডিরেক্টরিগুলি দেখায় (ডিরেক্টরিগুলি ফিল্টার করতে টাইপ করতে শুরু করুন)। "J" ওরফে তৈরি করতে .bashrc পরিবর্তন করা প্রয়োজন।

সরঞ্জাম প্রাপ্ত

cd ~; mkdir Soft; cd Soft
git clone https://github.com/frazenshtein/fastcd

প্রয়োজনীয় মডিউল ইনস্টল করুন

pip install --user urwid

আপনার বাশার্কে সেট.শ ফাইলটি উত্স করুন

echo -e "\nsource /home/$USER/Soft/fastcd/set.sh\n" >> ~/.bashrc

এবং বাশার্ক আপডেট করুন

source ~/.bashrc

তারপরে কনসোলে কেবল "j" টাইপ করুন


কিভাবে কাজ করে? যদি এটির উপকরণ হয় তবে এই সরঞ্জামটি আপনার জন্য কী করে যা আপনি নিজে নিজে সম্পাদনা করে করতে পারবেন না .bashrc?
জি ম্যান

এটি ডেমন চালু করে যে লঞ্চ শেলস (ব্যাশ) এর জন্য fast / .رفেষ্টসিডি তে ডিরেক্টরিগুলি রেকর্ড করেছে records "জে" সরঞ্জামটি চালু করে যা আপনাকে দ্রুত সিডি করার ক্ষমতা সহ সর্বশেষ পরিদর্শন করা ডিরেক্টরিগুলি দেখায়। "J" ওরফে তৈরি করতে .bashrc পরিবর্তন করা প্রয়োজন। আপনি আরও তথ্যের জন্য সোর্স কোড দেখতে পারেন, আমার ধারণা
স্যাম টালিমন

দ্রুত সাড়া দেওয়ার জন্য আপনাকে ধন্যবাদ। এটি সেই ধরণের তথ্যের উত্তর যা হওয়া উচিত। এই তথ্য অন্তর্ভুক্ত করতে দয়া করে আপনার উত্তর সম্পাদনা করুন।
জি ম্যান

3

আমারও একই প্রশ্ন ছিল এবং আমি প্রথমে এই উত্তরটি খুঁজে পেয়েছি । আমি ইউটিলিটি z ( https://github.com/rupa/z ) ইনস্টল করেছি ।

এটি হ'ল আপনি যা খুঁজছেন, কারণ z আপনার সিডি কমান্ডগুলি থেকে শিখে এবং ফ্রিকেন্সি নীতি (ঘন ঘন এবং সাম্প্রতিক) অনুসারে ডিরেক্টরিগুলি অনুসরণ করে। সুতরাং আপনি উভয় সিডি কমান্ড একবার করার পরে, আপনি দু: খজনক মত করতে পারেন:

z docs
z ds

লাফ দিতে /Project/Warnest/docs/এবং ~/Dropbox/Projects/ds/test/যথাক্রমে। জেড-এ যুক্তিগুলি হ'ল রেজিজেসস, তাই আপনাকে একটি সম্পূর্ণ ফোল্ডার নাম টাইপ করার দরকার নেই।


3

আপডেট ( ২০১ )): আমি এখন এটির জন্য এফএএসডি ব্যবহার করি , যা আপনার সর্বশেষ ডিরেক্টরিগুলির উপর ভিত্তি করে अस्पष्ट অনুসন্ধানের অনুমতি দেয়।


আমি এটির জন্য একটি সরঞ্জাম তৈরি করেছি, রুবিতে। এটি আপনাকে আপনার প্রকল্পগুলি ঘোষণা করতে YAML ফাইলগুলি ব্যবহার করার অনুমতি দেয়।

আমি এখানে এটি সম্পর্কে একটু নিবন্ধ লিখেছিলেন করেছি: http://jrnv.nl/switching-projects-terminal-quickly/

আমি গিটহাবের উত্সটিও পোস্ট করেছি: https://github.com/jeroenvisser101/project-switcher


2

আমি বহু বছর ধরে এটি পরিচালনা করতে আমার নিজস্ব ইউটিলিটি সিডিটিস্ট ব্যবহার করছি । এটি আপনার সিডি কমান্ডটিকে অপরিবর্তিত করে এবং স্বয়ংক্রিয়ভাবে একটি ডিরেক্টরি স্ট্যাক রাখে।


2

আপনি exportভেরিয়েবলগুলিতে আপনার ডিরেক্টরিগুলির পথ নির্ধারণ করতে এবং তারপরে সেগুলি উল্লেখ করতে পারেন use

export dir1=/Project/Warnest/docs/
export dir2= ~/Dropbox/Projects/ds/test/
cd $dir1
cd $dir2

হ্যাঁ, এটি কয়েকটি প্রিয় ডায়ারের পক্ষে যথেষ্ট। অন্য কোনও ইউটিলিটি ইনস্টল করার দরকার নেই। কেবলমাত্র exportবিবৃতিগুলি আপনার মধ্যে রাখুন ~/.bashrcএবং সেগুলি সর্বদা উপলব্ধ থাকবে।
উইসবাকী

1

কিছু পরামর্শ এখানে:

সর্বাধিক সরাসরি ধারণা, আমি। প্রোফাইলে ফাইলটিতে উপন্যাস যুক্ত করব

vi ~/.profile
alias dir1='cd /myhome/onedir'
alias dir2='cd /jimmy/anotherdir'

তারপরে সিডি $ dir1 বা ব্যবহার dir2করতে পারেন

আপনি যদি সবসময় কেবল দুটি ডায়ারে স্যুইচ করেন। ব্যবহার cd -তাদের মধ্যে পাল্টাবে।


1

আমি এই পরিস্থিতির জন্য সমাধানটি হ'ল screen। স্ক্রিন শুরু করুন এবং প্রতিটি ডিরেক্টরিের জন্য একটি উইন্ডো তৈরি করুন এবং C-a cসেখানে নেভিগেট করুন। উইন্ডো / ডিরেক্টরিগুলির সাথে C-a nবা এর সাথে পরিবর্তন করুন C-a p। উইন্ডোগুলির সাথে নাম দিন C-a A। তারপরে আপনি উইন্ডোগুলির একটি তালিকা পপ আপ করতে পারেন C-a "এবং উইন্ডো নম্বর বা নাম ব্যবহার করে নেভিগেট করতে পারেন। যেহেতু এটি হ'ল screen, আপনি আপনার কাজের স্থান সংরক্ষণ করে সেশন থেকে আলাদা করতে পারেন এবং একই সেট আপের সাথে পরে আবার সংযুক্ত করতে পারেন।


1

দেখে মনে হচ্ছে আপনার যা প্রয়োজন তা মূলত আপনার কর্মপ্রবাহের জন্য একটি প্রকল্প ফাইল। আপনার ক্রিয়াকলাপের সাথে সম্পর্কিত ডিরেক্টরিগুলি যেমন কোনও প্রোগ্রামিং আইডিইয়ের সাথে। ব্যবহার করে দেখুন Zsh ন্যাভিগেশন সরঞ্জাম এবং টুল n-cdআছে। এটি আপনাকে সর্বশেষ পরিদর্শন করা ফোল্ডারগুলি জুড়ে নেভিগেট করতে এবং Hotlistআপনার পছন্দের ডিরেক্টরিগুলির সাথে একটি সংজ্ঞা দেবে :

এন-সিডি

n-cd এর সাথে একটি মূল সংমিশ্রণে আবদ্ধ হতে পারে:

zle -N znt-cd- উইজেট

বাইন্ডকি "^ টি" znt-cd- উইজেট


1

টি এল; ডিআর

  1. একটি ব্যবহার করুন Fishইন্টারেক্টিভ শেল জন্য যে, আপনি নীচের ক্ষমতায়ন ( fish> zsh> bash)।
  2. ব্যবহারের POSIX/ Bashস্ক্রিপ্টিং জন্য সবচেয়ে ব্যাপকভাবে সমর্থিত সিনট্যাক্স যে ( POSIX> Bash> Zsh> Fish)।

শেল

এখানে বিভিন্ন শাঁস পরীক্ষা করা আমার প্রতিক্রিয়া (পরীক্ষার / গ্রহণের ক্রমে):

  • Bash:
    • স্বয়ং-সমাপ্তি: বেসিক;
    • পথ প্রসারণ: না;
    • স্ক্রিপ্টিং: দুর্দান্ত।
  • Zsh+ oh-my-zsh:
    • স্বতঃপূরণ: ভাল (সাইক্লিং মাধ্যমে);
    • পাথ সম্প্রসারণ: হ্যাঁ ( cd /e/x1cd /etc/X11/);
    • স্ক্রিপ্টিং: ভাল।
  • Fish+ oh-my-fish(বর্তমান) বাক্সের বাইরে সেরা:
    • স্বয়ংক্রিয় সমাপ্তি: নেটিভ এবং সমর্থিত বিকল্পসমূহ;
    • পথ প্রসারণ: হ্যাঁ;
    • স্ক্রিপ্টিং: পসিক্স-সামঞ্জস্যপূর্ণ থেকে খুব বেশি পার্থক্য।

অর্থবোধক এলিয়াস ব্যবহার করুন

প্রতিটি শেল ব্যবহার করে প্রসারিত করা যেতে পারে functionএবং alias, আমি এখানে আপনার সমস্যার সাথে সম্পর্কিত ব্যবহার করি (POSIX- সামঞ্জস্যপূর্ণ):

back () {  # go to previous visited directory
        cd - || exit
}

up () {  # go to parent directory
        cd ..|| exit
}

এখানে বেসিক, তবে সত্যই অর্থবহ তাই মনে রাখা সহজ এবং স্বতঃসিদ্ধ।

আপনার শেল জানুন

কনফিগার করুন CDPATHআপনার সর্বাধিক ব্যবহৃত সংগ্রহগুলি (যেমন যোগ করার জন্য ~/projects/, /etc/init.d/) তাহলে আপনি দ্রুত তাদের তিড়িং লাফ পারেন।

Mroe বিশদ জন্য manatwork উত্তরCDPATH দেখুন ।

হ্যাঙ্গআউট এবং পড়ুন


যখন একটি শেল ফাংশন কল করে exit, আপনি ইন্টারেক্টিভ শেল থেকে প্রস্থান করবেন। এই "অর্থবহ উপমা" কেবল alias back='cd -'এবং হতে পারে alias up='cd ..'- তবে চিন্তা করবেন না, সেই আদেশগুলি কখনই মিথ্যা ফিরে আসবে না (কোনও পূর্ববর্তী ডিরেক্টরি নেই? এটি আপনাকে বাড়িতে পাঠায়! ইতিমধ্যে মূলের মধ্যে? এটি কোনও বিকল্প নেই!) এবং তাই আপনি কখনই প্রস্থান করতে পারবেন না) । এটিকেও বিবেচনা করুন alias back='cd $OLDPWD'(একক উক্তিগুলি নোট করুন) যেহেতু এটির কোনও আউটপুট থাকবে না ( cd -এটি আপনাকে কোথায় পাঠাচ্ছে তা আপনাকে জানায়, এটি সম্ভবত অপ্রয়োজনীয় যেহেতু আপনার প্রম্পটে সেই তথ্য রয়েছে)
অ্যাডাম কাটজ

1

ancএটি একটি সেমিডি লাইন সরঞ্জাম (অ্যাঙ্কারের জন্য সংক্ষিপ্ত), যা ডিরেক্টরিগুলির বুকমার্কগুলিকে রাখে। (এখন পর্যন্ত কেবল বাশ দিয়ে পরীক্ষা করা হয়েছে)

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

anc a /Project/Warnest/docs/ ~/Dropbox/Projects/ds/test/

এটি অ্যাঙ্কর (বুকমার্কগুলি মনে করি) তালিকায় উভয় ডিরেক্টরি যুক্ত করে

এখন আপনি যদি /Project/Warnest/docs/আপনার সিস্টেমের যে কোনও জায়গা থেকে ঝাঁপ দিতে চান তবে :

anc Warn

এবং আপনি ~/Dropbox/Projects/ds/test/টাইপ করতে লাফ দিতে চান :

anc ds test

বুকমার্কযুক্ত পাথগুলির বিপরীতে পাঠ্য মেলা ছাড়াও ডিরেক্টরিতে প্রায় লাফ দেওয়ার জন্য আরও অনেক সুবিধাজনক উপায় রয়েছে।

anc i

ইন্টারেক্টিভ মোডটি শুরু হয়, যা সংখ্যায় সমস্ত বুকমার্ক তালিকাভুক্ত করে, তাই আপনাকে যা টাইপ করতে হবে তা হ'ল নম্বর

আপনি যদি টাইপ করেন:

anc Pro[TAB]

সমস্ত বুকমার্কের সাথে মেলে একটি তালিকা (আপনার ক্ষেত্রে উভয় বুকমার্ক) দেখা যায় এবং আপনি এটি থেকে আপনার তীরচিহ্নগুলি ব্যবহার করে চয়ন করতে পারেন, এটি একটি খুব দ্রুত এবং স্বজ্ঞাত উপায়।

প্রকল্পের গিথব পৃষ্ঠায় আনেক পান: https://github.com/tobimensch/anc

উদাহরণস্বরূপ ব্যবহার সহ একটি README রয়েছে।

সম্পূর্ণ প্রকাশ: আমি এই স্ক্রিপ্টটির লেখক। আমি আশা করি কিছু লোক এটির কাজে লাগবে।

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