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


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.