किसी दिए गए निर्देशिका पर स्विच करने के लिए शॉर्ट-कट


12

उबंटू टर्मिनल में मुझे लगता है कि कंप्यूटर के शुरू होने पर हर बार किसी विशेष निर्देशिका में जाने के लिए काफी समय खर्च करना पड़ता है। क्या कोई तरीका है जिससे मैं इस प्रक्रिया को आसान बना सकता हूँ? क्या कुछ हॉटकी या कुछ त्वरित निर्देशिका परिवर्तन हैं जो मैं उपयोग कर सकता हूं (जैसे फोन पर स्पीड डायल)?

 eg:
    cd 1:Changes to saved directory one

इस सवाल के चार साल बाद और किसी ने भी आज तक सीडीपीएटीएच का उल्लेख नहीं किया। :(
कूजिरो

मुझे लगता है कि यह आपके कंसोल पर निर्भर हो सकता है, लेकिन कुबंटू टर्मिनल में एक बुकमार्क मेनू है जहां मैं सिर्फ एक निर्देशिका को बुकमार्क कर सकता हूं और उस तरह से कूद सकता हूं!
Pixel

जवाबों:


12

दो विकल्प हैं:

  1. यदि आप एक विशिष्ट निर्देशिका में रहना चाहते हैं तो हर बार जब आप एक bash टर्मिनल खोलते हैं, तो अपनी ~/.bashrcफ़ाइल को संपादित करें और cd Directoryउदाहरण के लिए, बस लाइन जोड़ें cd ~/Desktop

  2. यदि आप कई शॉर्ट-कट्स करना चाहते हैं, तो आप हमेशा वैश्विक चर का उपयोग कर सकते हैं, जिसे आप अपनी ~/.bashrcफ़ाइल में निम्नानुसार सेट कर सकते हैं export a=/tmpऔर फिर आप ऐसा करने में सक्षम cd $aहोंगे जो आपको लाएगा /tmp

याद रखें कि अपनी .bashrcफ़ाइल को संपादित करने के बाद आपको टर्मिनल को पुनरारंभ करना होगा या एक नया खोलना होगा।


3
टर्मिनल को फिर से शुरू करने से बचने के लिए आप इसका इस्तेमाल कर सकते हैं source ~/.bashrcया कम कर सकते हैं . ~/.bashrc
गेरहार्ड बर्गर

18

इसके अलावा एक नज़र है autojump, यह पहले से देखी गई निर्देशिकाओं के साथ एक डेटाबेस बनाता है और फिर आप इसे कूद सकते हैं। तो उदाहरण के लिए आपके पास है

/home/user/this/long/and/annoyingly/deep/directory/workstuff

फिर यदि आप इसे एक बार देख चुके हैं तो आप इससे कूद सकते हैं

j workstuff

या और भी

j stuff

क्योंकि यह आंशिक मैचों के साथ भी काम करता है। यदि एक से अधिक निर्देशिका मेल खाती हैं, तो आप सबसे अधिक विज़िट किए जाने वाले से कूदते हैं, यदि यह वह नहीं है जिसे आप चाहते थे, तो दूसरे पर जाने के लिए कमांड को दोहराएं।

हालाँकि यह बेहतर हो जाता है! अगर आपके पास भी डायरेक्टरी है

/home/user/stuff

और आप करते हैं

j stuff 

और फिर TabTabTabआप प्राप्त (सबसे मुलाकात के क्रम में)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

और फिर आप बस इच्छित निर्देशिका की संख्या दबा सकते हैं!

स्थापित करने के लिए आप बस उपयोग कर सकते हैं sudo apt-get install autojumpऔर फिर आपको जोड़ना होगा

source /usr/share/autojump/autojump.bash

अपने को ~/.bashrc

यहाँ अधिक जानकारी: https://github.com/wting/autojump (src से इसे कैसे स्थापित करें, इस पर निर्देश जो आपको सबसे हालिया संस्करण में मिलता है)


1
एक टर्मिनल में crtl + r पिछले कमांड्स में "आंशिक मैचों" के लिए भी दिखता है। वास्तव में भी आसान है।
दान

6

बैश उपनाम आमतौर पर कमांड चलाने के लिए शॉर्ट-कट बनाने के लिए उपयोगी होते हैं।

  • में ~/.bashrc, उर्फ बनाने के लिए एक लाइन निम्नलिखित के समान जोड़ें:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • टर्मिनल को फिर से बंद और खोलें, या चलाएं source ~/.bashrc

  • अब से, आप बस jump1उस लंबी cdकमांड को निष्पादित करने के लिए चला सकते हैं ।

यह सभी देखें:


4

हालांकि पहले से ही कुछ अच्छे उत्तर हैं, मैंने सोचा कि मैं पुराने pushdऔर popdबाश बिल्डिंस की पूर्णता का उल्लेख करूंगा, जिससे आप अपने फाइल सिस्टम में गहरे रास्तों में निर्देशिकाओं के बीच बहुत जल्दी जा सकेंगे। बर्गर.गाautojump द्वारा उल्लिखित बुकमार्क के विपरीत , उपयोग करके बनाई गई निर्देशिका स्टैक केवल अस्थायी है।pushd

जीएनयू मैनुअल नोटों के रूप में , pushdऔर popdबैश बिल्डिंस हैं जिनका उपयोग अस्थायी निर्देशिका स्टैक के निर्माण के लिए किया जाता है

हाल ही में देखी गई निर्देशिकाओं की सूची। पुशड बिल्टिन डायरेक्टरी को स्टैक से डायरेक्टरी जोड़ता है क्योंकि यह करंट डाइरेक्टरी को बदल देता है, और पोप बिलिन स्टैक्ड से निर्दिष्ट डाइरेक्टरी को हटा देता है और करंट डाइरेक्टरी को डाइरेक्टरी को बदल देता है। डायर बिलिन निर्देशिका स्टैक की सामग्री को प्रदर्शित करता है।

इसका उपयोग करने में थोड़ा सा समय लगता है, लेकिन इस ब्लॉग और इस साइट पर उदाहरण के लिए बहुत सारे उपयोगी ट्यूटोरियल हैं । आदेशों के लिए अलग-अलग मैनपेज़ नहीं हैं, क्योंकि वे बैश मैनपेज में शामिल हैं, लेकिन त्वरित संदर्भ के लिए आप GNU बैश पेज देख सकते हैं ।

सबसे स्पष्ट स्पष्टीकरण इस बहुत उपयोगी लेख में है और ठीक उसी तरह है जैसे मैं उपयोग करता हूं pushdऔर popd:

सबसे पहले, स्टैक पर निर्देशिकाओं को सूचीबद्ध करने के लिए उपयोग करें dirsया dirs -lस्टैक dirs -cको खाली करने के लिए।

एक मायने में आप उस स्थान को बुकमार्क करते हैं जहां आप प्रवेश करके वापस लौटना चाहते हैं

pushd /home/mike/Pictures/Canon/2012_07_01

और फिर आप स्टैक में अधिक निर्देशिकाओं को जोड़ सकते हैं, ताकि आपको नीचे दी गई लिस्टिंग मिल जाए, जिसमें 3 निर्दिष्ट फ़ोल्डर और आपके ~होम फ़ोल्डर शामिल हैं:

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

आपको वास्तव में popdसीधे उपयोग करने की आवश्यकता नहीं है क्योंकि यह स्टैक से निर्देशिकाओं को हटा देता है; सबसे अच्छी बात यह है pushdकि स्टैक को घुमाने के लिए उपयोग करना है , ताकि आप निर्देशिकाओं के बीच स्विच कर सकें और उन्हें अपनी इच्छानुसार ऑर्डर कर सकें। उस उपयोगी स्टैक रोटेशन के बारे में अधिक जानने के लिए बैश मैनपेज देखें ।

यदि आपके पास उपरोक्त dirsलिस्टिंग शो के रूप में वास्तव में स्टैक की व्यवस्था है , pushd +3तो आपको विशिष्ट पिक्चर्स फ़ोल्डर और उन स्थानों पर स्विच करता है, जो स्टैक के शीर्ष पर है (यह +3 है और +4 नहीं है क्योंकि आप ~निर्देशिका स्टैक में अपनी गणना नहीं करते हैं ):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

तो शीघ्र पढ़ता है,

~/Pictures/Canon/2012_07_01$

आप उन्हें स्टैक से हटाए बिना ऐसा करते रह सकते हैं, हालाँकि आप cdजिन भी फ़ोल्डरों को डायरेक्टली स्टैक के साथ जोड़ते हैं pushd, उनके अलावा आपकी निर्देशिका स्टैक को बदल देगी।

एक बार जब आपके पास निर्देशिका स्टैक की व्यवस्था हो जाती है जिसे आप चाहते हैं, तो आप popdनिर्देशिकाओं के माध्यम से जल्दी से चक्र करने के लिए उपयोग कर सकते हैं और फिर होम फ़ोल्डर में लौट सकते हैं; उदाहरण के लिए, Picturesहम यहां से लौट सकते हैं Downloads:

popd
~/Downloads/folder/interest ~/Music/artist/album ~

और शीघ्र पढ़ता है

~/Downloads/folder/interest$

सामान्य रूप से इसकी सुंदरता यह है कि आप निर्देशिका स्टैक और उसके भीतर वस्तुओं के क्रम को सेट कर सकते हैं pushdऔर फिर, कह सकते हैं कि आपके पास उन प्रत्येक निर्देशिका में संपादित करने के लिए तीन फाइलें हैं, आप popdउन्हें हटाते समय प्रत्येक के साथ तुरंत वापस आ सकते हैं निर्देशिका स्टैक से। फिर अपने अंतिम के साथ popdआप वापस आ जाएंगे ~। यह विशेष रूप से उपयोगी हो जाता है जब आपके पास विशेष रूप से गहरी निर्देशिकाएं होती हैं और इसका उपयोग निर्देशिका स्टैक को सेट करने के लिए उनके बीच जल्दी से स्थानांतरित करने के लिए कर सकते हैं।

इसके अलावा, इस प्रश्न में कुछ सुझाव दिए गए हैं जो आपको कमांड-लाइन पर काम करते समय उपयोगी लग सकते हैं:


2

हालांकि इसे तेज़ी से करने के लिए कुछ कमांड लाइन मौजूद है, फिर भी मैं एक Nautilus एक्सटेंशन नाम का उपयोग करके व्यक्तिगत रूप से सिफारिश करूंगा nautilus-open-terminal

पहले पैकेज स्थापित करें nautilus-open-terminalऔर अपने पसंदीदा फ़ोल्डरों को Nautilus के साथ बुकमार्क करें। Nautilus 3.6 पर। *, आपको गियर मेनू में जाना होगा और इस स्थान को बुकमार्क करना होगा

यहाँ छवि विवरण दर्ज करें

फिर अपने पसंदीदा निर्देशिकाओं में तेजी से जाने के लिए नॉटिलस बुकमार्क का उपयोग करें, और बस खाली जगह पर क्लिक करें और टर्मिनल में ओपन का चयन करें ।

यहाँ छवि विवरण दर्ज करें

अब आपके पास अपनी पसंदीदा निर्देशिकाओं के लिए कमांड लाइन और फ़ाइल प्रबंधक दोनों की त्वरित पहुँच हो सकती है।


मूल पोस्टर टर्मिनल से काम करने की कोशिश कर रहा है और यह अक्सर टर्मिनल से काम करने के लिए तेज होता है।
खतरा

1
@ हज़ीज़: हाँ, लेकिन आस्कयून्तु प्रश्न और उत्तर न केवल ओपी के लिए उपयोगी होने चाहिए, बल्कि विशेष रूप से उन सभी लोगों के लिए भी हैं जिन्हें यह वेब में मिला है। यह मेरे लिए एक मूल्यवान उत्तर है।
जेवियर रिवेरा

2

anc वास्तव में उस उपयोग के मामले के लिए डिज़ाइन किया गया था।

https://github.com/tobimensch/anc

यहां पढ़ें README.md से एक अंश:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

पूर्ण प्रकटीकरण: मैं एक लेखक हूँ।


1

आप अपनी .bashrc फ़ाइल (या अपने पसंदीदा शेल के लिए कॉन्फ़िगर फ़ाइल) में एक उपनाम रख सकते हैं-वे आमतौर पर आपके होम डायरेक्टरी में हैं):

alias cd1="cd directory/directory/my_destination/"

बाश में उपनाम का उपयोग करने के बारे में एक उपयोगी जानकारी लिंक यहाँ है


1

मैंने इसके लिए bash फ़ंक्शन का एक सेट बनाया और इसे मेरे .bash_profile में जोड़ा

लिपि

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

प्रयोग

getFolders

GetFolders का उपयोग करके आपके पास प्रत्येक फ़ोल्डर के लिए शॉर्टहैंड, विवरण और स्थान की एक सूची है। जब आप एक शॉर्टहैंड के साथ getFolders का उपयोग करते हैं तो यह फ़ोल्डर स्थान को आउटपुट करेगा। आप बस एक पैरामीटर के बिना getFolders कॉल करके उपलब्ध फ़ोल्डर और उनके विवरण की एक सूची प्राप्त कर सकते हैं

फ़ोल्डर पथ प्राप्त करने का उदाहरण

getFolders alias

आउटपुट

/path/to/alias/folder

उपलब्ध फ़ोल्डर का उदाहरण।

getFolders

आउटपुट

alias
- Description of alias
alias2
- Description of alias2

gf

gf getFolders के लिए एक शॉर्टकट है

gf alias2

आउटपुट

/path/to/alias2/folder

के लिए जाओ

गोटो चयनित फ़ोल्डर में सीडी का एक सरल तरीका है।

goto alias

उत्पादन

cd / path / to / alias / folder पर चला गया है

/ Path / to / उर्फ ​​/ फ़ोल्डर>

क्यों कई कार्य हैं

हृदय यूनिक्स और लिनक्स में आपके पास सरल पुन: प्रयोज्य कार्य हैं जिन्हें एक साथ जंजीर से जोड़ा जा सकता है। मैं इस विधि को पसंद करता हूं क्योंकि यह आपको केवल एक चयनित स्थान पर नहीं ले जाता है, लेकिन, एक ऐसा फ़ंक्शन है जो उपनाम द्वारा एक पथ देता है। आप इस फ़ंक्शन का उपयोग उस बिंदु से उस पथ पर cd जैसे कुछ भी करने के लिए कर सकते हैं।


0

अपने .bashrc या .bash_profile में CDPATHपर्यावरण चर सेट करने पर विचार करें । CDPATH वैसा ही बृहदान्त्र-सीमांकित रूप लेता है PATHजैसे अन्य चर लेते हैं, और cdआपकी निर्देशिकाओं को खोजने में शॉर्टकट लेते हैं। उदाहरण के लिए:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz

0

आप एक विशिष्ट निर्देशिका के लिए अपना स्वयं का शॉर्टकट सेट कर सकते हैं। उदाहरण के लिए आप नेस्टेड डायरेक्टरी में जाना चाहते हैं, आम तौर पर आप करते हैं

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

आप आमतौर पर cd कमांड का उपयोग करते हैं और फिर सभी डायरेक्टरी नाम टाइप करते हैं या आप टाइप करना छोड़ सकते हैं (TAB बटन का उपयोग कर सकते हैं) लेकिन फिर भी आपके कुछ मिनट लगते हैं।

तो, अपना समय बचाने के लिए आप टर्मिनल में इसका एक उपनाम बना सकते हैं । उर्फ को स्थापित करने के लिए इसका एक बार का कार्य।

उर्फ दिर-लक्ष्य = '/ घर / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

अब, तुम बस के लिए है का उपयोग अन्य नाम ( dir-लक्ष्य अपने लक्ष्य निर्देशिका में स्थानांतरित करने के लिए)।


0

सबसे तेज़ तरीका जो मुझे मिला है xd, वह फ्रैंक बी ब्रोकेन नामक एक डचमैन द्वारा लिखा गया "ईएक्सचेंज निर्देशिकाएँ" प्रोग्राम है।

यह आपके फाइलसिस्टम पर सभी रास्तों को खोजकर काम करता है जो आपके द्वारा टाइप किए गए संक्षिप्त नाम को हल कर सकते हैं, उदाहरण के ulbलिए /usr/local/binयदि आपका फ़ोल्डर आपके सिस्टम में मौजूद है तो इसके लिए खड़ा हो सकता है:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

2 दबाने पर आप अंदर हैं /usr/local/bin

यह वास्तव में पुराना सॉफ्टवेयर है और मूल स्थान पर उपलब्ध नहीं है, लेखक के साथ कोई संपर्क नहीं है, इसलिए इसे खो जाने से बचाने के लिए, मैंने इसे गीथब रेपो में डाला:

https://github.com/mrkafk/exchange_directories


-1

मैं ऐसा करने के लिए DirB (डायरेक्टरी बुकमार्क्स) का उपयोग करता हूं। बहुत अच्छा! http://www.linuxjournal.com/article/10585

मैंने अपने स्वाद के अनुरूप खान को संशोधित किया है और उपयोग में आसान और स्पष्ट है।


उबंटू पूछने के लिए आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
जीवाश्म
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.