जवाबों:
-Pविकल्प का उपयोग करके आउटपुट को पार्स करना थोड़ा आसान बनाया जा सकता है जो सुनिश्चित करेगा कि:
- प्रत्येक फ़ाइल सिस्टम के बारे में जानकारी हमेशा एक लाइन पर मुद्रित होती है; माउंट डिवाइस को कभी भी एक लाइन पर नहीं रखा जाता है। इसका अर्थ है कि यदि माउंट डिवाइस का नाम 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}'
awkकरना बेहतर है। मैंने लंबी कमांड को शामिल किया क्योंकि मैं इस बात का उदाहरण रखना चाहता था कि कोई व्यक्ति कुछ अधिक जटिल करने के लिए सरल आदेशों की एक श्रृंखला कैसे बना सकता है। मैंने आपके सुधार को शामिल करने के लिए उत्तर अपडेट कर दिया है।
-Pमानक है ( PPOSIX के लिए है)। लेकिन -hएक GNU एक्सटेंशन है (कुछ अन्य प्रणालियों पर भी मौजूद है, लेकिन उदाहरण के लिए OpenBSD पर यह असंगत है -P)।
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) चलाने से गति में कोई सार्थक अंतर नहीं पता चलता है, जो आश्चर्यजनक नहीं है - आह्वान tailमहंगा नहीं है और awkइनपुट के अंत तक छोड़ने के लिए बख्शा जाएगा ... हो सकता है कि कोई अंतर हो PDP-11 ...
बाइट्स में:
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
du -h?