क्या सीडी का उपयोग किए बिना किसी निर्देशिका में कई चरणों में वापस जाने की आज्ञा है?


14

मैं लगातार 'cd ../../../../' जा रहा हूं। क्या कोई कमांड / उपनाम है जो मुझे 'cmd 4' जाने दे सकता है और मुझे 4 निर्देशिकाओं को वापस ले लिया जाएगा?


ls? निश्चित रूप से तुम्हारा मतलब है cd?
क्रिस जस्टर-यंग

हाँ, मैं करता हूँ, मैंने इसे एक भीड़ में लिखा था;) अब इसे संपादित कर रहा हूँ।

यह करना चाहते हैं ?:alias cmd5 = "cd ../../../../../"
ypercube this

ठीक है, मुझे लगता है कि मैं उन्हें 1 से 10 या अधिक के लिए लिख सकता हूं, लेकिन यह करने का एक चतुर तरीका अच्छा होगा। यह वास्तव में मेरे साथ सही नहीं बैठता है। ऐसा करेंगे यदि कोई अन्य समाधान नहीं निकलता है, हालांकि।

जवाबों:


16

इसे अपने में रखें ~/.bashrc:

cdup() {
  levels=${1-1}
  while ((levels--)); do
    cd ..
  done
}

(नाम cdupइसी एफटीपी कमांड से आया है, सिर्फ FYI करें।)


प्रतिक्रिया के लिए धन्यवाद, jleedev के जवाब के साथ चला गया क्योंकि यह 1 पंक्ति छोटा है और मैं अपना मन नहीं बना सका कि किसे चुनना है! फिर भी धन्यवाद!

@Muu: दोनों उत्तर काम करेंगे, लेकिन मेरा कई, कई स्तरों के लिए काम करेगा, और @ jleedev की केवल एक छोटी मुट्ठी के लिए काम करेगा (जो भी स्टैक सीमा है)। ;-) (मुझे यकीन है कि आप किसी भी तरह से सीमा को कभी नहीं मारेंगे, लेकिन मेरा अधिक सामान्य है, वही है जो मैं पाने की कोशिश कर रहा हूं। :-))
क्रिस जस्टर-यंग

उचित बिंदु, मैंने आपको उत्तर दिया है। क्षमा करें jleedev - हालाँकि मैं आपके समाधान का उपयोग करना जारी रखूँगा, क्योंकि मैं इसे बदलना भूल जाऊँगा :)

11

मुझे ऐसी परिस्थितियों के लिए 'पुशड' और 'पॉपड' का इस्तेमाल करना सिखाया गया।

उदाहरण के लिए, 'पुशड' टाइप करें। और फिर 'सीडी / होम'। अब 'popd' टाइप करें और आप वापस वहीं आ जाएँगे जहाँ से आपने शुरुआत की थी।

'pushd' / 'popd' एक स्टैक है, आप जितने चाहें उतने डायरेक्टरीज़ को वहां पर धकेल सकते हैं, लेकिन यह आखिरी है, जब आप popd करते हैं।


हम्म, अच्छा है। उसके बारे में नहीं सुना। बिल्कुल फिट नहीं है कि मैं क्या देख रहा था, लेकिन वह भी उपयोग करेगा। धन्यवाद।

10

जरूर, क्यों नहीं:

यूपी() {
    [$ # = 0] && cd .. && वापसी
    [$ 1 = 0] और& प्रतिफल
    सीडी .. && $ $ (($ 1 - 1))
}

बैश टेल-पुनरावर्ती नहीं है, है ना? यदि आप ऐसा करते हैं तो आप ओवरफ्लो कर सकते हैं up 500। :-)
क्रिस जस्टर-यंग

6
अगर आपकी निर्देशिकाओं में गहराई से निहित है, तो आपको मेरी सहानुभूति है।
जोश ली

इसका इस्तेमाल किया। क्रिस को 1 पंक्ति से हराया;)

@Muu: मुझे नहीं पता था कि यह सवाल एक कोड गोल्फ था! ;-) बीटीडब्ल्यू, हमारे साथ आओ! codegolf.stackexchange.com
क्रिस

3
@Muu कृपया याद रखें कि सामान्य रूप से शेल स्क्रिप्ट लिखने के लिए पुनरावृत्ति उचित तरीका नहीं है।
जोश ली

4

जल्दी और गन्दी:

cmd () { dir=.; for i in $(seq 1 $1); do dir=$dir/..; done; pushd $dir; }

केवल एक बार निर्देशिका बदलने के लिए तैयार।


2

यहाँ एक वैकल्पिक तरीका है:

function cdup
{
    cd $(for ((i=0 ; i<$1 ;i++)); do printf "../" ; done)
}

1

आप स्थान मार्करों का उपयोग करना pushdऔर popdसेट करना चाहते हैं और जिस भी निर्देशिका में आप परिवर्तित हुए हैं, वहां से आसानी से वापस आ सकते हैं।

आप एक निर्देशिका के नाम के साथ एक चर भी सेट कर सकते हैं जिसका आप बहुत उपयोग करते हैं, फिर वहां सीडी:

MYPROJ=~/projects/name/src
cd $MYPROJ
proj1='cd $MYPROJ'


1

पथ का उपयोग कर का निर्माण printfतो cdयह करने के लिए:

cdup() {
    local path
    printf -v path '%*s' "${1:-1}"
    cd "${path// /../}"
}

इस रूप में उपयोग करें:

cdup 4 # to go up four directories
cdup 1 # to explicitly go up one directory
cdup   # to implicitly go up one

0

दो विचार जो आपके काम आ सकते हैं:

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

  2. cdd पुराने नए
    यह एक स्क्रिप्ट फ़ंक्शन था जिसे मैंने अतीत में लिखा था कि मैं इसी तरह के पेड़ों के बीच घूमने के लिए उपयोग करता था। मूल रूप से इसने दो तर्क दिए और अपने रास्ते पर एक रेक्सएक्सप किया, जो शाखाओं और इस तरह के बीच घूमने के लिए महान था। उदाहरण के लिए यदि आप ~ / bzr / web / trunk / path / to / feature में थे और ~ / bzr / वेब / सुविधा-शाखा / पथ / से / सुविधा के लिए प्राप्त करना चाहते हैं तो आप करेंगे cdd trunk feature-branch। एइसी पर मैं एक पुरातन खोल भाषा में लागू किया गया था, लेकिन यह बहुत तुच्छ था, इसलिए यदि आपको इसकी आवश्यकता है, तो विकल्प के खोल में लागू करना आसान होना चाहिए। हमारे लिए यह बहुत उपयोगी था क्योंकि संरचना इस तरह दिखती थी: ... / {उत्पाद} / {संस्करण} / {जारी} / {src, bld, dbg, pkg, tst} / {घटक} / ... इसलिए चारों ओर घूमना उस पेड़ में पागल बहुत जल्दी हो गया।

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