`-`` ध्वज के साथ` डु` कमान का व्यवहार


11

मैंने duकमांड के साथ एक अजीब व्यवहार देखा है जब इसका उपयोग -Lकमांड लाइन विकल्प के साथ किया जाता है।

मैं स्लैकवेयर 14 और कोरुटिल्स 8.19 का उपयोग कर रहा हूं।

अजीब व्यवहार को पुन: उत्पन्न करने के लिए, दो फ़ोल्डर बनाएं:

mkdir foo
mkdir bar

फ़ोल्डर के अंदर एक फ़ाइल बनाएँ:

perl -e 'print "A"x10000' > foo/text

और दूसरे फ़ोल्डर में एक सिम्लिंक:

ln -s ../foo/text bar/text

अब, यदि आप टाइप करते हैं:

du -h -L bar

आपको मिलेगा:

16k bar

चूंकि सिम्लिंक को डिरेल किया गया था। लेकिन अगर आप टाइप करते हैं:

du -h -L *

आपको मिलेगा:

16K     foo
4.0K    bar

और सिम्लिंक को डिरेल नहीं किया जाएगा। क्या मैं कुछ भूल रहा हूँ?


ऐसा लगता है duकि यहां चतुर खेलना चाहता है, लेकिन अगर आप df -a -L bar fooआउटपुट चलाते हैं तो बहुत गलत है (16K को बार में छोड़ना फू को खाली छोड़ना)।
गाइड

जवाबों:


18

डिफ़ॉल्ट रूप से, duप्रत्येक फ़ाइल को केवल एक बार गिना जाएगा यदि यह कई बार से जुड़ा हुआ है। यदि आप du -L barइसे चलाते हैं, तो यह फ़ाइल की गणना करेगा क्योंकि यह केवल एक बार ही पहुंचता है। हालाँकि, यदि आप du -L *इसे चलाते हैं तो इसे पहली बार देखने पर ही इसे गिनेंगे। उदाहरण के लिए:

$ du -L foo bar
16K     foo
4.0K    bar

$ du -L bar foo
16K     bar
4.0K    foo

ध्यान दें कि तर्कों के क्रम को बदलने से कौन सा फ़ोल्डर 16K के रूप में रिपोर्ट किया जाता है।

आप पैरामीटर duको पास करके फ़ाइल को दो बार गिनने के लिए बाध्य कर सकते हैं -l

संपादित करें:

प्रतीकात्मक लिंक एक विशेष प्रकार की फ़ाइल है, और लिंक का पालन करने के लिए एक अतिरिक्त कदम की आवश्यकता होती है। duजब तक -Lविकल्प सक्षम न हो, प्रतीकात्मक लिंक का पालन नहीं करेगा ।

दूसरी ओर एक कड़ी, मूल रूप से दो (या अधिक) फ़ोल्डरों में मौजूद एक फ़ाइल है। duमुमकिन है कि इन दो बार की गिनती से बचने के लिए इनकोड नंबर द्वारा कौन सी फाइलें देखी हैं। -lइस व्यवहार को अक्षम करता है।

तो, बस के साथ -L, यह प्रतीकात्मक लिंक का पालन करेगा, लेकिन अगर लक्ष्य फ़ाइल में एक इनोड नंबर है, तो यह पहले ही देख चुका है कि इसे फिर से गिना नहीं जाएगा। बस -lयह डुप्लिकेट हार्ड लिंक की गिनती करेगा, लेकिन प्रतीकात्मक लिंक का पालन नहीं करेगा।

यदि आप उपयोग करते हैं -lऔर -Lएक साथ, यह दोनों प्रतीकात्मक लिंक का पालन करेगा, और लक्ष्य फ़ाइल (नों) को एक से अधिक बार गिनने की भी अनुमति देगा।


धन्यवाद। यह काम। हालाँकि मैं कुछ अतिरिक्त व्याख्या करना पसंद करूंगा। मैन पेज पर, मैंने पढ़ा है कि -lकरता है count sizes many times if hard linked, लेकिन यहाँ मैं सिमिलिंक के साथ काम कर रहा हूँ। इसके अलावा, -lअकेले समस्या का समाधान नहीं करता है, जबकि अगर मैं दोनों का उपयोग करता हूं -lऔर -Lयह आकार ठीक से गिनता है।
ज़गोरैक्स

@Zagorax हाँ, आदमी पृष्ठ कैसे -lऔर -Lबातचीत पर थोड़ा अस्पष्ट है । टिप्पणी के लिए स्पष्टीकरण थोड़ा लंबा हो गया है, इसलिए मैंने अपना उत्तर अपडेट कर दिया है।
डेविड बैगरमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.