मैं BASH में निर्देशिका कैसे ताज़ा करूँ?


24

मेरे पास एक निर्देशिका है, जिसमें संकलक द्वारा उत्पन्न फाइलें हैं। प्रत्येक पुनर्निर्माण के दौरान यह निर्देशिका साफ हो जाती है और निर्माण प्रक्रिया के बाद lsमुझे खाली आउटपुट देती है। के बाद मैं cdनिर्देशिका से बाहर है और फिर इसे वापस ls सही काम करता है। प्रश्न हैं:

  1. क्या निर्देशिका को रीफ्रेश करने का कोई और सुंदर तरीका है?
  2. वास्तव में क्या होता है जब फ़ाइलें हटा दी जाती हैं और फिर से बनाई जाती हैं? मुझे cdवास्तविक निर्देशिका सामग्री देखने की आवश्यकता क्यों है?

जवाबों:


10

आपकी स्क्रिप्ट निर्देशिका को हटाने की संभावना है, और न केवल फाइलें जो वहां हैं। इसलिए, जब आपके पास cdयह है, और निर्देशिका को हटा दिया जाता है, तो आप lsउस निर्देशिका पर करते हैं जो वास्तव में मौजूद नहीं है।

तब तक cd ..और cd (directory)आप (नवसृजित) निर्देशिका में ऊपर और पीछे जाते हैं, और फाइलें वहीं होती हैं जैसा आप उम्मीद करते हैं।

सबसे अच्छा विकल्प cdनिर्देशिका के अंदर और बाहर होने के बजाय है , निर्देशिका नाम को अपनी lsकमांड में जोड़ना है , और इसे मूल निर्देशिका से चलाना है। इसलिए, ls YourSubdirectoryसिर्फ के बजाय ls


45

एक छोटा रास्ता भी है: cd .


3
दिलचस्प। चिड़ियों की तरह, यह, तार्किक रूप से, काम नहीं करना चाहिए - और फिर भी ऐसा प्रतीत होता है कि यह करता है। मुझे लगता है कि आप जानते हैं कि यह काम करता है क्योंकि आपने इसे आज़माया है। क्या आपके पास इसके लिए कोई दस्तावेज है? यानी, अगर मैं POSIX / बैश डेवलपमेंट टीम में होता, तो मुझे इस बग पर विचार करने के लिए लुभाया जाता। क्या आप किसी भी दस्तावेज के बारे में जानते हैं जो कहता है कि यह इस तरह से काम करना है?
जी-मैन का कहना है कि 'मोनिका'

3
बाज़ की तरह, यह, खूबसूरती से, फूलों के ऊपर तैरता है - और फिर भी यह गुनगुनाता है।
मैट फॉस

हाँ! इतना सही
chrismarx

1
यह बेहतर उत्तर है।
deddebme

आह। मुझे पता था! एक रास्ता बनना था। धन्यवाद!
andersoyvind

10

यह अजीब लगता है, लेकिन यह छोटा है और निर्देशिका को ताज़ा करता है:

cd `pwd`

ध्यान दें कि वे पीछे की टिक हैं, जो कि pwd के आसपास एक भी उद्धरण नहीं हैं


2

@Kent ने क्या कहा या: निर्देशिका को न हटाएं, लेकिन केवल इसकी सामग्री को, इस तरह आप निर्देशिका (" cd .. && cd -") के बिना रह सकते हैं और "ls" वही करता है, जो आपने उससे करने की अपेक्षा की थी।


2

बेहतर होगा कि आप डायरेक्टरी को न हटाएं, बल्कि cd ..; cd -आप कर सकते हैं cd $PWD


2

एक उपनाम ताज़ा करें = "cd .. && cd -" जो एक निर्देशिका को ऊपर जाएगा और फिर पिछली निर्देशिका में cd बनाएगा

यदि आप सुनिश्चित हैं कि आपको फिर से लिस्टिंग की आवश्यकता होगी, तो आपके पास हो सकता है

alias refresh="cd .. && cd - && ls -lrt"

एक बार ailas बनाने के लिए अपने ~ / .bashrc फ़ाइल में उपनाम की दुकान है

alias | grep refresh >> ~/.bashrc

ताकि अगली बार जब आप लॉगिन करें तो यह उपलब्ध हो।


यूनिक्स refreshमें आउट-ऑफ-द-बॉक्स है।
कीनॉर्ब

"आउट-ऑफ-बॉक्स" से आपका क्या अभिप्राय है? जब मैंने इसे देखा, तो मैंने इसका मतलब "मानक" बताया; अब मैं सोच रहा हूँ कि तुम्हारा क्या मतलब है। "UNIX" को परिभाषित करें। Cygwin में "रिफ्रेश" कमांड मानक नहीं है (ठीक है, Cygwin को बहुत सारी चीजें याद आ रही हैं जो POSIX / * nix / जो भी हैं) में मानक हैं, और न ही मेरा लिनक्स सिस्टम।
जी-मैन का कहना है कि 'मोनिका'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.