सीडी के साथ एक फ़ाइल के मूल निर्देशिका के लिए जा रहे हैं?


9

मैं मेरे लिए कुछ काम करने के लिए एक .sh लिख रहा हूं, लेकिन मैं अब उस बिंदु पर हूं जहां मुझे निर्देशिका को फ़ाइल / cath/to/file.end में cd करना है। टर्मिनल अनुमति नहीं देता है।

cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory

दुख की बात है कि मुझे पता नहीं है, इसलिए यह अच्छा होगा यदि आप मदद कर सकते हैं!


4
उम, क्या आपका मतलब है cd /path/to? यह निर्देशिका को उस निर्देशिका में बदल देगा जो फ़ाइल file.endमें है।
— अलाअ अली

1
नहीं, फ़ाइल चर रही है, और मैं फ़ाइल के पथ में प्रवेश करना चाहूंगा (इसे टर्मिनल में छोड़ दें) और फिर उस फ़ोल्डर में जाएं जो इसमें है
— Azsgy

जवाबों:


10

टाइप करें cd $( dirname /path/to/file.end)। वह तुम्हें भीतर ले जाएगा /path/to।

स्पष्टीकरण:

  • dirnameएक फ़ाइल के लिए पूरा रास्ता देता है (फ़ाइल नाम के बिना, जो आपको मिलेगा basename) - यानी dirname /etc/apt/apt.conf.d/99update-notifierरिटर्न/etc/apt/apt.conf.d
  • $(anything)कोष्ठक में कमांड के परिणाम द्वारा अभिव्यक्ति को प्रतिस्थापित किया जाता है। इसलिए के cd $( dirname /etc/apt/apt.conf.d/99update-notifier)रूप में निष्पादित किया जाता हैcd /etc/apt/apt.conf.d

उसी के लिए एक और (लेकिन पुराना और हतोत्साहित) संकेतन था

cd `dirname /path/to/file.end` 

8

आप cdएक फ़ाइल में नहीं कर सकते । यहां एक कमांड (कमांड लाइन) फ़ंक्शन है जो cdकिसी दिए गए पूरी तरह से योग्य फ़ाइल पथ के लिए स्वचालित रूप से एक पथ में होगा :

function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }

क्या मुझे यह अधिकार मिला है ?: फंक्शन एलसीडी () {[-f $ 1] && {cd $ (/ file.end 1); } || {सीडी $ 1; } pwd} प्रतिक्रिया है: bash: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि `pwd 'यह मुझे इस तरह से एक त्रुटि देता है :(
— Azsgy

2
@ एश्ट, इससे पहले एक अर्धविराम की आवश्यकता है pwd, और यदि आप एक पंक्ति में किसी फ़ंक्शन को परिभाषित कर रहे हैं, तो अर्धविराम की आवश्यकता है pwd।
— ग्लेन जैकमैन

@glennjackman फ़ंक्शन बिना किसी आउटपुट या डीआईआर के परिवर्तन से बाहर निकलता है :(
— अज़गी

फ़ंक्शन को चलाएं, फिर दर्ज करें echo $?- बाहर निकलने की स्थिति क्या है?
— ग्लेन जैकमैन

मुझे अपने आप पर संदेह नहीं करना चाहिए। जब मैंने पाया यह _O- विकल्प मेरे लिए बेहतर देखा
— Rinzwind

1

यदि आप फ़ाइल नाम में "/ .." जोड़ते हैं जो आपको सही निर्देशिका में ले जाएगा उदा cd /path/to/file.end/..। यह वैसे भी Cygwin पर काम करता है।


4
बाश में काम नहीं करता;) touch test && cd /home/test/test/..कहता हैbash: cd: /home/test/test/..: No such file or directory
— रिनजविंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.