खोल से वर्तमान निर्देशिका का नामकरण - संभव है?


24

क्या किसी शेल (मेरे विशेष मामले में बैश) से वर्तमान कामकाजी निर्देशिका का नाम बदलना संभव है? अगर मैं इसे सीधा करने का प्रयास करता हूं, तो मैं एक त्रुटि के साथ समाप्त होता हूं:

nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy

वर्तमान निर्देशिका को बदलने के बिना ऐसा करने का एक और तरीका है? मुझे एहसास है कि मैं इसे आसानी से मूल निर्देशिका में बदलकर पूरा कर सकता हूं, लेकिन अगर यह आवश्यक है तो मैं उत्सुक हूं। आखिरकार, यदि मैं किसी अन्य शेल से निर्देशिका का नाम बदल देता हूं, तो मैं उसके बाद भी मूल शेल में फाइलें बना सकता हूं।

जवाबों:


41

हां, लेकिन आपको निर्देशिका को नाम से संदर्भित करना है, न कि .संकेतन का उपयोग करके । आप एक सापेक्ष पथ का उपयोग कर सकते हैं, इसे बस किसी अन्य चीज़ के साथ समाप्त करना होगा .या ..:

/tmp/test$ mv ../test ../test2
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2

आप एक पूर्ण पथ का उपयोग कर सकते हैं:

/tmp/test$ cd -P .
/tmp/test2$ mv "$PWD" "${PWD%/*}/test3"
/tmp/test2$ 

इसी तरह, rmdir .कभी काम नहीं करेगा, लेकिन rmdir "$PWD"करता है।


बिल्कुल सही ... बिल्कुल वही जवाब जिसकी मुझे उम्मीद थी।
नाथन उस्मान

5
मूल मुद्दा यह है कि आपको विशेष को हटाने या नाम बदलने की अनुमति नहीं है "।" और ".." नाम।
बरमार


1

और यह इस बात पर निर्भर करता है कि आप "वर्तमान निर्देशिका को बदलते" कैसे परिभाषित करते हैं।

/tmp/test$ (cd .. && mv test test2)
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2

एक उपधारा को जन्म देता है और वर्तमान निर्देशिका को उपधारा में परिवर्तित करता है, लेकिन आपके प्राथमिक शेल को छोड़ देता है जहां यह था।

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