बश में वर्तमान निर्देशिका में मुफ्त स्थान उपलब्ध करें


25

मुझे पता है df -hऔर pwd, लेकिन यह रेगेक्स मिलान वाले हिस्से के लिए थोड़ा जटिल लगता है। कोई विचार?


1
क्या आपका मतलब था du -h?
ज्वीरीच

जवाबों:


45

-Pविकल्प का उपयोग करके आउटपुट को पार्स करना थोड़ा आसान बनाया जा सकता है जो सुनिश्चित करेगा कि:

  1. प्रत्येक फ़ाइल सिस्टम के बारे में जानकारी हमेशा एक लाइन पर मुद्रित होती है; माउंट डिवाइस को कभी भी एक लाइन पर नहीं रखा जाता है। इसका अर्थ है कि यदि माउंट डिवाइस का नाम 20 से अधिक वर्ण लंबा है (उदाहरण के लिए, कुछ नेटवर्क माउंट के लिए), तो कॉलम गलत लिखा गया है।

यह बहुत आसान है बस उपलब्ध खाली स्थान पाने के लिए:

$ df -Ph . | tail -1 | awk '{print $4}'

( -hमेगाबाइट्स, गीगाबाइट्स इत्यादि का उपयोग करता है। यदि आपके सिस्टम में यह नहीं है, -kकेवल किलोबाइट के लिए उपयोग करें )

यदि हम dfएक पथ से गुजरते हैं , तो यह केवल 2 पंक्तियों को वापस करने वाला है: एक हेडर पंक्ति और फिर पथ शामिल फ़ाइल सिस्टम के बारे में डेटा। हम सिर्फ दूसरी पंक्ति को हथियाने के लिए पूंछ का उपयोग कर सकते हैं। हम जानते हैं कि उपलब्ध स्थान 4 वें कॉलम में है, इसलिए हम इसे पकड़ लेते हैं awk। यह सब किया जा सकता है awk:

$ df -Ph . | awk 'NR==2 {print $4}'

या फिल्टर के कई अन्य सेट ।


आप $PWDकमांड प्रतिस्थापन का उपयोग करने और पूंछ की आवश्यकता को दूर करने के बजाय पर्यावरण चर का उपयोग करके अपनी कमांड को अनुकूलित कर सकते हैं : df -Ph $PWD | awk 'NR==2{print $4}'
SiegeX

@SiegeX: मैं मानता हूं कि यह सब awkकरना बेहतर है। मैंने लंबी कमांड को शामिल किया क्योंकि मैं इस बात का उदाहरण रखना चाहता था कि कोई व्यक्ति कुछ अधिक जटिल करने के लिए सरल आदेशों की एक श्रृंखला कैसे बना सकता है। मैंने आपके सुधार को शामिल करने के लिए उत्तर अपडेट कर दिया है।
स्टीवन डी

-Pमानक है ( PPOSIX के लिए है)। लेकिन -hएक GNU एक्सटेंशन है (कुछ अन्य प्रणालियों पर भी मौजूद है, लेकिन उदाहरण के लिए OpenBSD पर यह असंगत है -P)।
गिलेस एसओ- बुराई को रोकना '

आप इसेdf -h --output=avail . | tail -1
फ्लोयड

"आप अपने आदेश को अनुकूलित कर सकते हैं"। ज़रुरी नहीं। दोनों पाइपों को 10'000 बार (के रूप में time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) चलाने से गति में कोई सार्थक अंतर नहीं पता चलता है, जो आश्चर्यजनक नहीं है - आह्वान tailमहंगा नहीं है और awkइनपुट के अंत तक छोड़ने के लिए बख्शा जाएगा ... हो सकता है कि कोई अंतर हो PDP-11 ...
डेविड टोनहोफर

10

कैसे कर रहा है df -h .? यह आपको आपकी वर्तमान कार्यशील निर्देशिका में विभाजन के उपलब्ध खाली स्थान देगा।

एक छोटा सा उदाहरण:

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /

4

बाइट्स में:

df --output=avail -B 1 "$PWD" | tail -n 1

मानव पठनीय:

df --output=avail -h "$PWD" | tail -n 1

या

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"

या

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.