आपको सीडी क्यों चलाना चाहिए। कुछ करने से पहले?


22

में सिस्टम प्रशासक भयावहता की इस संकलन , लेखकों में से एक अंगूठे का एक नियम के रूप में, लिखते हैं:

हमेशा cd .कुछ भी करने से पहले एक बार करें ।

आप ऐसा क्यों करना चाहते हो?

जवाबों:


32

तुम नहीं।

कम से कम ऐसा नहीं है। उद्धृत दस्तावेज में पूर्ववर्ती पंक्ति महत्व की है:

  • pwdआप हर समय सीडी करने के लिए अपना संकेत सेट करें ।
  • हमेशा cd .कुछ भी करने से पहले एक बार करें ।

इस तरह, आप ऑपरेटर के रूप में महत्व के कुछ भी करने से पहले अपने वर्तमान कामकाजी डायर को सत्यापित करते हैं, क्योंकि यह प्रत्येक परिवर्तन के साथ मुद्रित होता है। cd .अन्यथा कोई मतलब नहीं है।

यह "सत्यापन" एक अच्छी बात है, और आपको इसका एक रूप अनुकूलित करना चाहिए। इस विषय की एक और अधिक (IMHO) सामान्य भिन्नता हमेशा प्रॉम्प्ट पर वर्किंग डायर का प्रिंट आउट है।


11
यह सोचने के लिए बेहतर है कि "हमेशा टाइप करें 'pwd' कुछ भी करने से पहले यह सुनिश्चित करने के लिए कि आप जो सोचते हैं कि आप निर्देशिका में हैं, ऐसा करने के लिए महत्वपूर्ण है
रॉड मैकफर्सन

4
सिर्फ pwdकुछ करने से पहले क्यों नहीं ?
मार्टिन कोन्सेनी

15
दरअसल, इसका एक उपयोग है। यदि आप एक प्रतीकात्मक लिंक के माध्यम से एक निर्देशिका में गए हैं, और लिंक तब कहीं और हटा दिया जाता है और फिर से बनाया जाता है, जैसे कि सर्वर परिनियोजन के दौरान जहाँ संस्करणों को "current_release" के सिम्लिंक के साथ नियंत्रित किया जाता है, तब ऐसा करने cd .से वास्तविक अंतर्निहित बदल जाएगा निर्देशिका है कि आप में हैं।
स्टीवर्ट

1
+1 के लिए " प्रॉम्प्ट पर हमेशा वर्किंग डायर का प्रिंट आउट लें।" यह वो है जो मैं करुंगा।
धान लैंडौ

4
@ स्टीवर्ट दुर्भाग्य से यह मदद नहीं करेगा अगर प्रतीकात्मक लिंक कुछ और करने से पहले लेकिन बाद में बदल जाए । यह सिर्फ गलत निर्देशिका में होने की संभावना को कम करता है, लेकिन सामान्य समस्या को हल नहीं करता है। जब तक आप वास्तविक निर्देशिका पर स्विच नहीं करते हैं जैसे कि आप वास्तव में वहां रहना चाहते हैं। cd .cd $(readlink -f .)
स्कै जूल

18

यदि आपके शेल की वर्तमान कार्यशील निर्देशिका को हटा दिया जाता है, तो डेटा खोना संभव है।

उदाहरण के लिए,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

का आउटपुट some_commandडिस्क पर नहीं लिखा गया था।

cd .कमांड चलाने से पहले टाइप करने से समस्या का पता चलता है।

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

यदि वर्तमान वर्किंग डायरेक्टरी डायरेक्टरी को हटा दिया गया और फिर से बनाया गया, तो टाइपिंग cd .उस डायरेक्टरी के संदर्भ को "रिफ्रेश" करेगी।

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

13

मुझे लगता है कि अपनी वर्तमान निर्देशिका दिखाना अधिक महत्वपूर्ण है।

प्रत्येक लिनक्स सर्वर पर, मैं /etc/bashrc"W" को "w" में बदलकर प्रॉम्प्ट को संशोधित करता हूं ।

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

सेवा मेरे

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

इसका प्रभाव यह है:

[root@xt include]#

बनाम

[root@xt /usr/src/spl-0.6.1/include]# 

है PS1बैश विशिष्ट?
qdii

मुझे ऐसा लगता है ... यह सब मैं उपयोग है।
इविहित

1
अगले सिस्टम अपग्रेड, थियो के साथ आपके बदलाव लुप्त हो सकते हैं।
ott--

2
@ ott-- यह छड़ी आपके ~/.profileया ~/.bash_profileसाथ ही अद्यतन/etc/skel/.profile
jscott
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.