सीएलआई के माध्यम से कैसे जल्दी और गहरी नेस्टेड निर्देशिकाओं से स्थानांतरित करने के लिए?


16

हम जानते हैं कि इसका उपयोग cd <directory>करने पर निर्देशिका खुल जाएगी, अगर यह मौजूद है!

इसके अलावा, cd ..हमें वर्तमान कार्यशील निर्देशिका से एक स्तर ऊपर ले जाएगा।

लेकिन, जब हमारे पास लंबे समय तक मार्ग के साथ एक नेस्टेड डायर होता है /home/thina/teams/td/tech/app/release/apks, तो यह केवल फ़ोल्डर में जाने के लिए थकाऊ होता है apksऔर यह भी कि दूसरे नोड पर वापस जाना मुश्किल है, यहां कहें /home/thina/teams

वहाँ की लिखना छोड़ें करने के लिए कोई तरीका है cdऔर cd ..? मैं Ubuntu 16.04 का उपयोग कर रहा हूं।


हां! वहाँ की लिखना छोड़ें करने के लिए कोई तरीका है cdऔर cd ..?
gsthina

@GSURENDARTHINA मुझे लगता है कि आप जानते हैं कि आप एक बार में कई स्तरों पर जाकर कम से कम कुछ कीस्ट्रोक्स बचा सकते हैं, जैसे आपके मामले मेंcd ../../../../..
अंडरस्कोर_ड

2
क्या सहानुभूति एक विकल्प है?
पॉकेट्स

1
आप डॉक्स CDPATHमें चर को देखना चाहते हैं bash
छप्पर

बस अगर आपको एहसास नहीं हुआ: आप वर्तमान कार्यशील निर्देशिका में किसी भी निर्देशिका के लिए "सीडी <निर्देशिका>" कर सकते हैं - बस एक स्लैश के साथ शुरू न करें। आपके उदाहरण के लिए, यदि आपकी वर्किंग डायरेक्टरी वर्तमान में "/ होम / थीना / टीमें / td / tech / app / release" है तो आप "cd apks" टाइप करेंगे
jcadcell

जवाबों:


30

वहाँ है pushdऔर popd:

pushd /home/thina/teams/td/tech/app/release/apks
# current directory now /home/thina/teams/td/tech/app/release/apks
popd
# current directory now what it was before pushd command

help pushdऔर help popdअधिक विकल्पों के लिए प्रयास करें। कोई manपृष्ठ नहीं है , क्योंकि pushdऔर popdबिल्ट-इन कमांड हैं।


5
cd -एक ही बात नहीं करेंगे ?
edwinksl

5
@edwinksl हाँ, लेकिन pushdऔर popdएक से अधिक पिछले रास्ते को याद कर सकते हैं।
जोस

8
/ आदेश के dirsभीतर अपनी निर्देशिका स्टैक को सूचीबद्ध करना न भूलें । pushdpopd
एरॉनिकल

4
ये बाश-बिलिंस (7) के लिए मैनुअल पेज में कवर किए गए हैं क्योंकि वे बिल-इन कमांड हैं। (या वे भी के लिए पूर्ण मैनुअल पृष्ठ में पाया जा सकता बैश ) यह रूप में एक ही जानकारी है help pushdऔर help popdआप का उल्लेख किया (और साथ ही help dirs), लेकिन मैंने सोचा कि मैं उल्लेख करें कि मामले में लोगों को जहां इन आदेशों से आते हैं सोच रहे थे।
MT

2
@Jos you misspelledhelp pusdh
सर्गी

16

पहले से उपलब्ध कराए गए बहुत अच्छे उत्तरों के अलावा, cdप्रभावी ढंग से उपयोग करने के लिए यहां कुछ सुझाव दिए गए हैं ।

  • cd - आपको पिछली निर्देशिका में वापस ले जाएगा।
  • cd ../../..आपको एक ही बार में 3 स्तरों पर ले जाएगा, आप ..एक साथ कई निर्देशिकाओं को 'ऊपर ले जाने' के लिए एक साथ जंजीर का उपयोग कर सकते हैं ।
  • यदि आप सुनिश्चित नहीं हैं कि आप कितनी बार ऊपर जाना चाहते हैं cd .., तो उपयोग करें , फिर कमांड का उपयोग करने के लिए तीर कुंजी पर दबाकर बैश इतिहास का उपयोग करें।
  • ~वर्तमान उपयोगकर्ता होम निर्देशिका के लिए खड़े होने के लिए उपयोग करें , यदि आप उपयोगकर्ता thina के रूप में लॉग इन हैं, तो आपको cd ~/teamsले जाएगा/home/thina/teams
  • रास्तों के लिए बैश ऑटो-पूर्णता का उपयोग करें, टैब कुंजी cdकमांड में एक पथ के एक भाग को पूरा करेगी , यदि आप एक पथ खंड का भाग टाइप करते हैं, तो Tabवह खंड पूरा हो जाएगा यदि कोई अन्य वैध विकल्प नहीं है। उदाहरण के लिए, यदि आपने टाइप किया था , cd /home/thina/teams/td/tतो दबाया गया था Tab, शब्द टेक आपके लिए भर जाएगा, इसलिए जब तक td डायरेक्टरी में कोई अन्य फाइल या निर्देशिका नहीं थी, जो अक्षर t से शुरू हुई थी।

इन युक्तियों का एक साथ उपयोग करना cdकम दर्दनाक के साथ ट्रैवर्सिंग निर्देशिका बना सकता है।


2
इस बिंदु पर जोड़ना ~, खासकर यदि आप जड़ हैं, ~userतो जल्दी से आपको userघर की निर्देशिका में मिल जाएगा ।
बजे एक CVn

धन्यवाद, मुझे यह एहसास नहीं था, मैं इसे अगले संपादन में जोड़ दूंगा।
एरॉनिकल

9

एक समय में पेड़ के कई स्तरों पर ऊपर जाने के लिए, आप निम्न फ़ंक्शन (वर्धित संस्करण के लिए मुरु का धन्यवाद) का उपयोग कर सकते हैं:

up ()
{
    local old="$PWD"
    for i in $(seq "${1:-1}"); do
        cd ..
    done
    OLDPWD="$old"
}

तो आप कर सकते हैं:

$ pwd
/home/thina/teams/td/tech/app/release/apks
$ up 5
cd'ing into /home/thina/teams

इसके अतिरिक्त:

  • upबिना तर्क के कॉल करना, सेट करने cd ..के लिए ${1:-1}विकल्प के कारण समान है $1और 1अन्यथा
  • cd ..सामान्य cd -व्यवहार को संरक्षित करने के अंतिम उद्देश्य के बाद ओएलडीपीडब्ल्यूडी की स्थापना करना ।

1
तकनीकी रूप से, यह एक फ़ंक्शन है, एक उपनाम नहीं है।
रीनियर पोस्ट

@ रीनियरपोस्ट: ठीक है! मैंने उसी के अनुसार सही किया है।
पारास

2
सुझाव: के -gtबजाय >>लेक्सिकोग्राफिक है, यह स्ट्रिंग्स के रूप में तुलना करता है। इसके अलावा, एक रास्ता बनाने के बजाय, cd ..एक लूप में क्यों नहीं for i in $(seq "${1:-1}"); cd ..; done:? वह ifभी हालत को खत्म कर सकता है।
मुरु

@ मैं आपकी gtटिप्पणी से सहमत हूं , लेकिन आपके दूसरे सुझाव के बारे में, जवाब में अंतिम गोली देखें। मेरी समझ मे आ रहा है।
ओलिपहंट -

1
@Oliphaunt यह विशेष रूप से कठिन नहीं है, आप बस OLDPWDमूल पथ पर सेट हैं । : यहाँ एक पूर्ण संस्करण है paste.ubuntu.com/17990874
muru

7

लंबी निर्देशिका नामों के लिए, पूर्ण पथ के साथ चर का उपयोग करें। उदाहरण के लिए,

APKS="/home/thina/teams/td/tech/app/release/apks"

तब आप बस कर सकते हैं cd "$APKS"

निर्देशिकाओं की संख्या को बढ़ाने के लिए, मेरे पास यह फ़ंक्शन परिभाषित है .bashrc

goup() # go up x number of dirs
{
  num=$1
  while [ $num -ne 0  ];do
    cd ..
    num=$( expr $num - 1   )
  done
}

आप /home/thina/teamsसे लौटने के लिए apksकरना होगा

goup  6

यहाँ उपयोग का एक उदाहरण है:

$> pwd
/sys/class/backlight/intel_backlight
$> goup 3
$> pwd
/sys
$> 

एक और छोटा सा फंक्शन, जो मैं साथ आया था, लेकिन कभी भी उतना bookmarkफंक्शन इस्तेमाल नहीं किया गया ।

यहां बताया गया है कि यह कैसे काम करता है: यह आपके वर्तमान फ़ोल्डर को कुछ फ़ाइल में सहेजता है, और फिर आप उस फ़ाइल में लाइन संख्या के आधार पर एक विशेष निर्देशिका में सीडी कर सकते हैं। उदाहरण:

$> cd /etc/lightdm
$> bookmark
$> cat ~/.dirsbookmarks                                                                                                  
/home/xieerqi
/sys/class/backlight
/etc/lightdm
$> cd $( awk 'NR==2' ~/.dirsbookmarks  )                                                                                 
$> pwd
/sys/class/backlight

और यहाँ फ़ंक्शन ही है:

bookmark()
{ # bookmarks current dir
  pwd >> $HOME/.dirsbookmarks
}

5

अद्यतन: इससे भी अधिक शक्तिशाली उपकरण है autojump: fasdलेकिन मैं इससे परिचित नहीं हूं।


मुझे आश्चर्य है कि किसी ने autojumpभी अभी तक इसका उल्लेख नहीं किया है

कमांड लाइन से सबसे अधिक उपयोग की जाने वाली निर्देशिकाओं के डेटाबेस को बनाए रखने से काम करता है (इससे पहले कि उन्हें जंप किया जा सके, इसके लिए निर्देशिकाएँ पहले देखी जानी चाहिए)।

यह मूल रूप से जो @graipher बनाया गया है, कुछ अतिरिक्त विकल्पों के साथ।

जैसा कि मैंने एक और प्रश्न पर उल्लेख किया है :

आपके द्वारा निर्देशिका में कुछ बार सीडी करने के बाद भी (एक बार पर्याप्त होने पर):

cd /home/thina/teams/td/tech/app/release/apks

आप jजिस भी निर्देशिका में वर्तमान में हैं, उसकी परवाह किए बिना आप वहां जल्दी से जाने के लिए शॉर्टकट का उपयोग कर सकते हैं :

j apks

ध्यान दें कि पथ के किसी भी हिस्से का उपयोग करते हुए, जब तक यह सूची में सबसे अधिक है: आपको उस समय j appभी ले जाएगा .../apksयदि आप कई बार वहां गए थे.../app

मैं आपकी खुद की स्क्रिप्ट रखने के बजाय इसकी सिफारिश करूंगा क्योंकि यह अच्छी तरह से बनाए रखा गया है, उबंटू के लिए वितरित किया गया है, और इसमें अन्य स्वच्छ विशेषताएं हैं, जैसे कि बच्चे के लिए कूदना :

.../td/tech $ jc apk
.../release/apks $ 

करने के लिए आप ले जाया गया है apksमें tdके बजाय कुछ अन्य, apksएक अलग पेड़ के नीचे।


'फैस' के लिए +1। यह वास्तव में उपयोगी है।
थॉमस

4

उपनाम

मेरे पास अक्सर उपयोग की जाने वाली निर्देशिकाओं की एक सूची है जो सीधे उपनाम के माध्यम से उपलब्ध हैं। इसमें पदानुक्रम तक निर्देशिकाओं के शॉर्टकट भी शामिल हैं।

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias cdwork=/home/knub/Repositories/work
alias cduni=/home/knub/University

अब, जब मैं तीन स्तरों पर जाना चाहता हूं, तो मैं सिर्फ टाइप करता ....<Enter>हूं और वहां हूं!


मुझे यह भी पसंद है, क्योंकि भले ही मैंने पहले सोचा था कि "हम्म 4 पीरियड 3 स्तरों के लिए ..." फिर मैंने सोचा, "ओह, हाँ ... कंप्यूटर! 0 , 1, 2, 3!" : D अब याद रखना आसान है, उपयोगी है, और कुछ मैं भी खेलूँगा। चीयर्स!
पी स्मिथ

github.com/bac0n/bash_completion bash_completion साथ
bac0n

4

autocdविकल्प ( shopt -s autocd) चालू करें , ताकि आपको टाइप न करना पड़े cd। उदाहरण के लिए, आपको ..मूल निर्देशिका में जाने के लिए बस दो-वर्ण कमांड की आवश्यकता है ।

यदि आप दो निर्देशिकाओं के बीच नेविगेट कर रहे हैं, तो आप उन दोनों के बीच टॉगल कर सकते हैं cd -, जो पिछली कार्यशील निर्देशिका में जाते हैं। autocdविकल्प नहीं है -रनcd - लेकिन आप एक उपनाम या उस के लिए समारोह को परिभाषित कर सकते हैं।

आप बिल्डरों के साथ एक स्टैक पर निर्देशिकाओं को याद कर सकते हैं pushdऔर popd। बिलिन dirsनिर्देशिका स्टैक को सूचीबद्ध करता है (मुझे लगता हैdirs -v अधिक पठनीय )।

यदि आप अक्सर किसी विशेष निर्देशिका के उपनिर्देशिका में बदलते हैं, और इन उपनिर्देशिकाओं में विशिष्ट नाम है, तो उन्हें CDPATHचर में जोड़ें । हालांकि चेतावनी दी गई है कि मुझे ऐसी स्थिति कभी नहीं मिली जहांCDPATH वास्तव में काम किया गया हो।

आप एक निर्देशिका नाम के लिए एक चर सेट कर सकते हैं और फिर इसके साथ बदल सकते हैं $foo

Zsh Zsh स्थापित करें में कुछ अच्छे फीचर्स हैं जो bash के पास नहीं हैं। उनमें से कुछ कार्यों को लिखने के द्वारा अनुकरण किया जा सकता है जो समान कार्य करते हैं। विशेष रूप से दो-तर्क रूप cdसे आपको एक समान नाम के साथ आसानी से दूसरी निर्देशिका में बदलने की सुविधा मिलती है, उदाहरण के लिए /home/thina/teams/td/tech/app/release/apks/com.acme/v1, चल रहा cd release betaहै /home/thina/teams/td/tech/app/beta/apks/com.acme/v1


2

जैसा कि मैंने पहले से ही UnixSE पर संबंधित प्रश्न पर उत्तर दिया है, मैं इसके लिए z [github] नामक एक स्क्रिप्ट का उपयोग करता हूं ।

यह उन निर्देशिकाओं को याद करता है जो आपने cd की हैं, उन्हें फ्रीकेंसी (फ़्रीक्वेंसी + रीसेंसी) के अनुसार रैंक किया है और आपको इसके नाम के कुछ हिस्से का उपयोग करके याद किए गए रास्तों में से एक में बदलने की अनुमति देता है।

एक निर्देशिका में cd'ed होने के बाद कम से कम एक बार आप इसके बजाय जैसे कर सकते हैं:

$ cd ~user/very/long/path/with/many/subfolders/

बस करो:

$ z sub

जो काम करेगा, आंशिक नाम मिलान का उपयोग करके (यह मानते हुए कि आपके पास कोई अन्य निर्देशिका नहीं है, जो कि उप-पथ का पद है और जिसकी उच्चतर स्वतंत्रता है)।

मैंने एक फ़ंक्शन को इस तरह परिभाषित किया है, जो पहले एक सामान्य सीडी की कोशिश करता है और अगर वह विफल रहता है तो z का उपयोग करता है:

function cd() {
    builtin cd "$1" 2> /dev/null || z "$1" || (echo "cd: File or Directory not found: $1" >&2 && exit 1)
}

इससे आपको दोनों का बेस्ट मिलता है। यदि फ़ोल्डर वर्तमान निर्देशिका में है या एक वैध पूर्ण पथ दिया गया है, तो यह सिर्फ वहाँ सीडी होगा, लेकिन यदि यह डेटाबेस और सीडी में मैच खोजने की कोशिश नहीं करेगा। यह कभी-कभी सीडी का उपयोग करने के लिए (डेटाबेस को प्रशिक्षित करने के लिए, आपके द्वारा पहले कभी नहीं किए गए फ़ोल्डर में जाने) और कभी-कभी लागू होने पर जेड का उपयोग करने के लिए याद करते हुए (छोटे) दर्द को दूर करता है।


क्या आप सुनिश्चित हैं कि cdआपका यह हस्तक्षेप zबार-बार आने वाली निर्देशिकाओं के डेटाबेस के निर्माण में हस्तक्षेप नहीं करता है ?
लेफ्टनैबाउट

यह कैसे अलग है autojump?
सिप्रियन टोमोयाग

@leftaroundabout: निश्चित नहीं है, लेकिन अभी तक यह अच्छी तरह से काम कर रहा है। जब भी आप बिल्ट सीडी (जो मेरा सेटअप पहले कोशिश करता है) का उपयोग करते हुए z निश्चित रूप से डेटाबेस बनाता है। हालांकि यह सुनिश्चित नहीं है कि जब z भाग का उपयोग किया जाता है, तब डेटाबेस अपडेट किया जाता है या नहीं। संपादित करें: बस परीक्षण किया गया है कि क्या $ $ बिलियन सीडी ~ / फोल्डर / i / है / / / / to / yet / के लिए डेटाबेस अपडेट किया गया है या नहीं। यह है।
अंगूर

1
@CiprianTomoiaga दरअसल, यह मूल रूप से एक ही काम करने लगता है। मैं जिस cd कमांड का उपयोग करता हूं उसका ओवरराइट भी उसके लिए इस्तेमाल किया जा सकता है। स्वत: पूर्ण के विभिन्न आदेश दिलचस्प लगते हैं, हालांकि!
अंगूर

btw: मैं z का लेखक नहीं हूं, बस यह बहुत उपयोगी है।
अंगूर

1

तीन और विकल्प जो मुझे अच्छी तरह से काम करने के लिए मिलते हैं (हालांकि मैं भविष्य में और pushdअधिक उपयोग कर सकता हूं, मैंने केवल उसके बारे में सीखा है):

  • अपने रास्तों को व्यवस्थित करें ताकि आपको cdपहले स्थान पर गहरी नेस्टेड निर्देशिकाओं में जाने की आवश्यकता न हो , या फिर: इसलिए जिन स्थानों पर आपको अक्सर यात्रा करने की आवश्यकता होती है वे आपकी उंगलियों पर सही हैं। इसे प्राप्त करने का तरीका सहानुभूति के साथ है : स्पष्ट, अच्छी तरह से पदानुक्रमित निर्देशिका रखें, लेकिन वे अपनी सुविधा के लिए त्वरित पहुँच लिंक बनाते हैं।

    ln -s ~/teams/td/tech/app/release/apks ~/apks

    फिर, वापस पाने के लिए लंबा रास्ता टाइप करने के बजाय cd, बस उपयोग करें cd ~/apks, और cd ../teams(या, उस उदाहरण में, बेहतर है ~/teams)।

  • रास्तों के बीच आगे और पीछे एक भी खोल और सीडी का उपयोग न करें, लेकिन आप जिस एक पथ में काम करने के लिए प्रत्येक पथ के लिए चल रहे हैं, एक खोल रखें। इस मल्टीटास्किंग को प्राप्त करने के लिए कई स्तर हैं:

    • कई टर्मिनल विंडो का उपयोग करें। सबसे अच्छा काम करता है अगर खिड़कियां विभिन्न कार्यस्थानों पर रहती हैं ।
    • एकल विंडो में कई टैब का उपयोग करें। यह केवल कुछ निर्देशिका में कुछ कमांड करने के लिए विशेष रूप से अच्छी तरह से अनुकूल है: वापस जाने के लिए, बस टर्मिनल टैब को बंद करें!
    • (वास्तव में समझदार आईएमओ नहीं है, लेकिन पूर्णता के लिए :) जैसे टर्मिनल मल्टीप्लेक्स का उपयोग करें tmux
    • केवल एक एकल-उद्देश्य कमांड में एक कार्रवाई शुरू करें जो cdफ़ोल्डर में नीचे है, वहां एक काम करता है और तुरंत मूल नियंत्रण पर वापस नियंत्रण देता है: इसके बजाय

      $ cd /home/thina/teams/td/tech/app/release/apks
      $ some_command this_file_here
      $ cd ../../../../..

      बस एक लाइनर करते हैं

      $ (cd ~/teams/td/tech/app/release/apks; some_command this_file_here)

      या समकक्ष

      $ sh -c 'cd ~/teams/td/tech/app/release/apks
      > some_command this_file_here'
  • नहीं cd सब पर है, लेकिन बस अपने घर निर्देशिका से आदेश सही निष्पादित। ब्रेस विस्तार यहां बहुत मदद कर सकता है: इसके बजाय

    $ cd /home/thina/teams/td/tech/app/release/apks
    $ some_command this_file_here other_file_also_apks
    $ cd ../../../../..

    तुम कर सकते हो

    $ some_command ~/teams/td/tech/app/release/apks/{this_file_here,other_file_also_apks}

pushdबहुत उपयोगी है। आप अपने उत्तर को बेहतर बनाने के लिए इसका उपयोग करने के बारे में अधिक जानकारी जोड़ना चाह सकते हैं।
सेर्गेई कोलोडियाज़नी

@ शेर: हाँ, लेकिन मुझे खुद पता है कि जोस के जवाब से ऊपर केवल पुशड है ।
वामावर्तआउट

आह, मैं इसे देखता हूं। फिर, यह भविष्य के उत्तर के लिए उपयोगी हो सकता है।
सेर्गेई कोलोडियाज़नी

1

पुश और पॉपड

आदेश pushdऔर popdमेरे पसंदीदा हैं। pushdआदेश निर्देशिका आपके द्वारा देखे गए आदेश के साथ देखा जा सकता है याद होगा dirs, और जब आप कूद के लिए तैयार हैं पीछे की ओर का उपयोग popdवापस जाने के लिए।

यहाँ बैश फ़ंक्शंस और उपनामों का उपयोग करके एक उदाहरण दिया गया है:

sd ()
{
    pushd "$1" > /dev/null
}

po ()
{
    popd
}

alias d='dirs'

मैं लगातार इन कमांड्स के मिश्रण का इस्तेमाल कई तरह से करता हूं।

उपनाम

अक्सर एक्सेस की गई निर्देशिकाओं के लिए एक अन्य विकल्प केवल उर्फ cdया pushdकमांड्स है। इसलिए, अपने पोस्ट से उदाहरणों का उपयोग करते हुए:

alias cdapks='cd /home/thina/teams/td/tech/app/release/apks'
alias cdteams='cd /home/thina/teams'

मेल

दो विचारों को मिलाएं और आप यह भी कर सकते हैं:

alias sdapks='sd /home/thina/teams/td/tech/app/release/apks'
alias sdteams='sd /home/thina/teams'

जो तब आपको ट्रैवर्सिंग निर्देशिकाओं में बहुत अधिक लचीलापन देता है। मैं रखने cd***और sd***जैसी चीजों के लिए हाथ पर उपनाम Desktop, Documents, Music, Downloads, आदि और यह बहुत आसान है!


1

Z.lua आज़माएं - एक नया cd कमांड जो आपकी आदतों को सीखकर आपको तेज़ी से नेविगेट करने में मदद करता है।

  • सीडी से एक निर्देशिका में फू शामिल है:

    z foo
  • सीडी एक निर्देशिका के साथ समाप्त होता है foo:

    z foo$
  • कई तर्कों का उपयोग करें:

    निम्नलिखित डेटाबेस को मानते हुए:

    10   /home/user/work/inbox
    30   /home/user/mail/inbox

    "z in"/home/user/mail/inboxउच्च भारित प्रविष्टि के रूप में सीडी जाएगा । हालाँकि आप एक अलग प्रविष्टि पसंद करने के लिए z.lua में कई तर्क दे सकते हैं। उपर्युक्त उदाहरण में, "z w in"फिर निर्देशिका को बदलेगा /home/user/work/inbox

  • इंटरैक्टिव चयन के साथ सीडी:

    जब कई मैच z -iमिलेंगे , तो सूची का उपयोग करके प्रदर्शन किया जाएगा:

    $ z -i soft
    3:  0.25        /home/data/software
    2:  3.75        /home/skywind/tmp/comma/software
    1:  21          /home/skywind/software
    > {CURSOR}

    फिर आप नंबर पर इनपुट कर सकते हैं और चुन सकते हैं कि वास्तविक सीडी से पहले कहां जाना है। जैसे। करने के लिए सीडी के लिए इनपुट 3 /home/data/software। और यदि आप सिर्फ ENTER और इनपुट कुछ भी नहीं दबाते हैं, तो यह सिर्फ छोड़ दिया जाएगा और जहां आप थे वहीं रहेंगे।

    z.luafzfइंटरएक्टिव चयन या तर्क पूरा करने के लिए भी समर्थन करता है :

    fzf के साथ पूरा करना

  • तेजी से बिना पैरेंट के वापस जाएं cd ../../..:

    नया विकल्प "-b""cd ..//../ .." टाइप करने के बजाए तेजी से एक विशिष्ट मूल निर्देशिका में वापस जा सकता है:

    • (कोई तर्क नहीं) : cdप्रोजेक्ट रूट में, प्रोजेक्ट मूल पेरेंट डायरेक्टरी को .git/ .hg/ के साथ रूट करता .svnहै।

    • (एक तर्क) : cdकीवर्ड के साथ शुरू होने वाले निकटतम माता-पिता में, यदि नहीं मिला, तो माता-पिता वाले कीवर्ड पर जाएं।

    • (दो तर्क) : पहले मान को दूसरे के साथ बदलें (वर्तमान पथ में)।

    ...

    आइए शुरू z -bकरते हैं zb:

    # go all the way up to the project root (in this case, the one that has .git in it)
    ~/github/lorem/src/public$ zb
      => cd ~/github/lorem
    
    # cd into to the first parent directory named g*
    ~/github/vimium/src/public$ zb g
      => cd ~/github
    
    # substitute jekyll with ghost
    ~/github/jekyll/test$ zb jekyll ghost
      => cd ~/github/ghost/test

काश यह आपकी जरूरत के हिसाब से फिट होता।


0

मछली के पास जल्दी से घूमने के लिए कई अच्छी सुविधाएं हैं।

  • यदि आप cd राइट-एरो दर्ज करते हैं, तो यह सबसे हालिया cd को दोहराता है।
  • सीडी अप-एरो राइट-एरो दर्ज करके, यह दूसरी सबसे हाल की सीडी को दोहराता है।
  • आदि।
  • इसमें प्रबल और nextd है, जिन्हें अक्सर पुशड और पोप की तुलना में उपयोग करना आसान होता है।

इसके अलावा, मैं अपने पसंदीदा निर्देशिकाओं को ~ / f से सहानुभूति रखता हूं, इसलिए मैं ~ / foo / bar / baz / प्रयोगात्मक-डेटा प्राप्त करने के लिए ~ / f / x cd कर सकता हूं।


0

मैंने लंबे समय से उपयोग की गई निर्देशिकाओं के लिए लंबे समय तक उपनाम का उपयोग किया है।

मेरे पास एक bash फ़ंक्शन भी है, जिसे ccb कहा जाता है (cd बैट फ़ाइल बनाने के लिए छोटा - यह dos / windows में उत्पन्न होता है। जहाँ .bat शेल स्क्रिप्ट ccb.bat एक और .bat फ़ाइल को वर्तमान निर्देशिका में कूदने के लिए बनाएगा) जो उपनामों को जोड़ता है / करता है। (.bash_aliases फ़ाइल) वर्तमान निर्देशिका के लिए।

उदाहरण: $ ccb myfav वर्तमान निर्देशिका के लिए एक उपनाम के साथ एक उपनाम बना देगा .bash_iyases फ़ाइल और स्रोत .bashrc फ़ाइल ताकि उपनाम तुरंत उपलब्ध हो।

मुझे अभी एक नया समाधान मिला है। यह बैश फंक्शन है

## USAGE : lj <your_dir>
### lj -- short for LongJump -- (kinda similar to a C function which would jump to an address outside of your current function)
function lj() {
        pushd `find . -type d -name $1 -print | head -n 1`
}

$ lj deeply_nested_dir_name

यह पिछले उपयोग से कुछ भी सीखने की जरूरत नहीं है। यह समस्या जो इसे हल नहीं कर सकती है: यदि उप-निर्देशिका ट्री में "deep_nested_dir_name" नाम की 1 से अधिक निर्देशिकाएं हैं, तो यह खोज द्वारा मिली निर्देशिका में से 1 पर कूद जाएगी।

इसके अलावा, यह समाधान कुछ अन्य डायरेक्टरी ट्री को गोटो करने में सक्षम नहीं होगा।

हार्डककोड अलायस और जेनरेट किए गए अलायस और इस नए lj () फ़ंक्शन के बीच, मेरी अधिकांश जरूरतों का ध्यान रखा जाता है।

जो भी इसका उपयोग करना चाहता है, उसके लिए मेरा ccb () बैश फ़ंक्शन है

function ccb() {
        foo=$PWD
        echo "" >> ~/.bash_aliases
        echo "alias $1='pushd $foo > /dev/null'" >> ~/.bash_aliases
        source ~/.bashrc
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.