वर्तमान निर्देशिका के लिए जानकारी माउंट करें


20

मैं df .माउंट की वर्तमान जानकारी में से कुछ को प्राप्त करने के लिए कर सकता हूं जो कि वर्तमान निर्देशिका में है, और मुझे वह सभी जानकारी मिल सकती है जो मैं चाहता हूं mount, लेकिन बहुत अधिक जानकारी (अन्य आरोह के बारे में जानकारी) प्राप्त कर सकता हूं । मैं इसे कम कर सकता हूं, लेकिन अगर कोई बेहतर तरीका है तो मैं सोच रहा हूं।

क्या कुछ कमांड mountinfoऐसी है जो mountinfo .मुझे मनचाहा जानकारी देती है (जैसे df ., लेकिन जो जानकारी mountदेता है।)


मैं डेबियन ग्नू + लिनक्स का उपयोग कर रहा हूं।


1
मेरा मानना ​​है कि statकमांड का इस्तेमाल भी किया जा सकता है। हालाँकि, मुझे यकीन नहीं है कि %mविकल्प जो माउंट पॉइंट देता है, आपके सिस्टम के संस्करण में समर्थित है। मैंने अपने सिस्टम में जाँच की और ऐसा लगा कि माउंट पॉइंट नहीं लौटाऊँगा।
रमेश

1
@ रमेश, हां stat "--printf=%m\n" .उस फ़ाइल-सिस्टम का माउंट-पॉइंट मिलता है जो वर्तमान निर्देशिका में है। इस प्रकार हमें कुछ उत्तरों को सरल बनाने की अनुमति मिलती है। धन्यवाद।
ctrl-alt-delor

जवाबों:


18

मुझे लगता है कि आप कुछ इस तरह चाहते हैं:

findmnt -T .

विकल्प का उपयोग करते समय

-टी, --टार्गेट पथ
यदि पथ माउंटपॉइंट फ़ाइल या निर्देशिका नहीं है, findmntतो माउंटपॉइंट प्राप्त करने के लिए रिवर्स ऑर्डर में पथ तत्वों की जांच करें। आप केवल कुछ क्षेत्रों को ही प्रिंट कर सकते हैं -o, --output [list]। उपलब्ध फ़ील्ड्स की सूची
देखें findmnt --help


वैकल्पिक रूप से, आप चला सकते हैं:

(until findmnt . ; do cd .. ; done)

आप जिस समस्या में चल रहे हैं, वह यह है कि सभी रास्ते किसी न किसी के सापेक्ष हैं, इसलिए आपको बस पेड़ पर चलना होगा। हर बार।

findmntउपयोग-लिनक्स पैकेज का एक सदस्य है और अब कुछ वर्षों से है। अब तक, आपके डिस्ट्रो की परवाह किए बिना, यह पहले से ही आपके लिनक्स मशीन पर स्थापित होना चाहिए यदि आपके पास भी mountउपकरण है।

man mount | grep findmnt -B1 -m1
For  more robust and customizable output use
findmnt(8),  especially  in  your   scripts.

findmntएक आरोह बिंदु तर्क के बिना सभी आरोह की जानकारी को प्रिंट करेगा, और केवल एक के साथ अपने तर्क के लिए। -Dहै अनुकरणdf विकल्प। -Dइसके उत्पादन के बिना mount- लेकिन अधिक विन्यास के समान है। कोशिश करो findmnt --helpऔर अपने लिए देखें।

मैं इसे एक उपधारा में चिपका देता हूं ताकि वर्तमान शेल की वर्तमान निर्देशिका परिवर्तित न हो।

इसलिए:

mkdir -p /tmp/1/2/3/4/5/6 && cd $_ 
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd

आउटपुट

TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw
SOURCE FSTYPE  SIZE   USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G 839.7M   11G   7% /tmp
/tmp/1/2/3/4/5/6

यदि आपके पास -Dविकल्प उपलब्ध नहीं है (न कि उपयोग के पुराने संस्करणों में), तो आपको कभी भी डरने की जरूरत नहीं है - यह किसी भी मामले में सुविधा स्विच से थोड़ा अधिक है। प्रत्येक कॉल के लिए उत्पन्न होने वाले कॉलम शीर्षकों पर ध्यान दें - आप प्रत्येक -oस्विचन के लिए उन लोगों को शामिल या बाहर कर सकते हैं जो यूटूट स्विच के साथ हैं। मैं जैसा चाहे वैसा ही आउटपुट प्राप्त कर सकता हूं -D:

 findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET

आउटपुट

SOURCE FSTYPE  SIZE  USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G  1.1G 10.6G  10% /tmp

मुझे यह पसंद है, बिट के बारे में छोड़कर -D, मेरे पास वह विकल्प नहीं है। (मैं डेबियन 7, उपयोग-लिनेक्स 2.20.1-5.3 पर हूं)
-अल्ट-डेलोर

मैं कुछ दिनों में आपको बताऊंगा, मैं यह देखने के लिए कुछ समय छोड़ दूंगा कि किसी के पास अधिक सटीक उत्तर है या नहीं। यद्यपि यह पूर्ण के करीब है (यदि यह df की तरह काम करता है: लूप की आवश्यकता नहीं थी, तो यह सही होगा)।
ctrl-alt-delor

@richard - यह एक अच्छा विचार है - मुझे यह पसंद नहीं है जब जवाब बहुत जल्द मिल जाते हैं। लूप के बारे में और df- मैं शर्त लगाता हूं कि यह लूप करता है, आपको बस ऐसा करने के लिए कहने की जरूरत नहीं है।
mikeserv

1
@Ramesh की बदौलत हम भी कर सकते हैंfindmnt $(stat "--printf=%m\n" .)
ctrl-alt-delor

2
मेरे संस्करण findmntमें एक -Tविकल्प है जो cd ..लूप को बायपास कर सकता है । किसी और के लिए उपयोगी हो सकता है।
नाइट्रोजन

1

लिनक्स / यूनिक्स का तरीका छोटी उपयोगिताओं का एक टूलबॉक्स है, जो संयुक्त होने पर आपको वे परिणाम देता है जो आपके बाद हैं।

वे हर अवसर के लिए उपयोगिता नहीं रखते हैं। इसके बजाय आपके पास कई छोटी उपयोगी उपयोगिताएँ हैं जो पाइप आदि के साथ संयुक्त हैं। इसका लाभ यह है कि आप अपनी उपयोगिता को बहुत आसानी से लिख सकते हैं यदि कोई उपलब्ध नहीं है।

उदाहरण के लिए, वह जानकारी प्राप्त करने के लिए जिसके बाद आप उपयोग कर सकते हैं:

mount | grep $(df  --output=source . | tail -1)

यदि आप विभिन्न निर्देशिकाओं के साथ फिर से उपयोग करना चाहते हैं, तो एक स्क्रिप्ट बनाएं:

#!/bin/bash
mount | grep $(df  --output=source $1 | tail -1)

इसे सहेजें mountinfoऔर इसे निष्पादन योग्य ( chmod +x mountinfo) बनाएं । तब आप इसका उपयोग कर सकते हैं:

mountinfo .

यदि आप एक ऐसी प्रणाली चाहते हैं, जिसमें हर उस चीज की उपयोगिता हो, जिसमें से कोई भी एक-दूसरे के साथ नहीं है, तो एक निश्चित श्री गेट्स आपकी मदद करने में सक्षम हो सकता है; ;-)


--outputकेवल जीएनयू कोर्यूटिल्स (≥8.22) के बहुत हाल के संस्करणों में मौजूद है।
गिल्स एसओ- बुराई को रोकना '

यह बहुत कुछ है जो मैं कर रहा हूं, यह सिर्फ इतना है कि mountकोई विकल्प नहीं लगता है थोड़ा सोचा के बाद: विकल्प के साथ आप माउंट बिंदु बनाते हैं, इसके बिना उन्हें सूचीबद्ध करता है, मैं एक बेहतर सूची टूल की उम्मीद कर रहा था। जैसा कि हम देखते हैं कि @mikeserv ने हमें दिखाया है findmnt
ctrl-alt-delor

1

यह कुछ गड़बड़ हो सकता है यदि माउंट पॉइंट में रिक्त स्थान हों, लेकिन यह उन मामलों को छोड़कर काम करना चाहिए जहां माउंट पॉइंट में नई सीमाएँ हैं:

#!/bin/sh
mountpoint="$(df -P "$1" | awk '{
    if (NR==1)
        i=index($0,"Mounted on");
    else
        print substr($0,i);
    }')"
mount|grep " on ${mountpoint} type "

df -Pफाइलसिस्टम के लिए एक लाइन आउटपुट करता है; उस विकल्प के बिना, dfदो बिंदुओं का उत्पादन हो सकता है यदि माउंट बिंदु लंबा है। माउंट पॉइंट का नाम उसी कॉलम में शुरू होता है जैसा हेडर लाइन में "माउंटेड ऑन" लेबल होता है।

माउंट पॉइंट मिलने के बाद, हम आउटपुट में इसके लिए grep करते हैं mount


1

मैं एक कमांड के बारे में नहीं जानता, लेकिन आप एक फंक्शन बना सकते हैं। आप नीचे जोड़ सकते हैं .bashrc:

mountinfo () {
  mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}

यह mountकमांड निष्पादित करता है और आउटपुट को पास करता है grepgrepके उत्पादन के लिए दिखेगा df -P "$1" | tail -n 1 | awk '{print $1}', और इसे तोड़ने के लिए:

  • df -P "$1"dfफ़ंक्शन के लिए दिए गए तर्क पर चलेगा ,
  • tail -n 1केवल दूसरी पंक्ति को आउटपुट करेगा, जिसमें वह partitionजानकारी होगी।
  • awk '{print $1}'उदाहरण के लिए, उस लाइन के पहले भाग को प्रिंट करेंगे, जो डिस्क / विभाजन संख्या है /dev/sda5। कि grepमाउंट कमांड में क्या दिखेगा, और इसे आउटपुट करेगा।

.bashrcपरिवर्तनों को लागू करने या लॉग आउट करने और वापस लॉग इन करने के लिए अपनी फ़ाइल को स्रोत ।

अब, यदि आप चलाते हैं mountinfo ., तो आपको वह आउटपुट मिलेगा जो आप चाहते हैं।


यह बहुत कुछ है जो मैं कर रहा हूं (लेकिन फ़ंक्शन के बिना, मैं इसे पर्याप्त नहीं करता, जब मैं ऐसा करता हूं तो इस साइट पर अन्य प्रणालियों जैसे उत्तर हैं।), यह सिर्फ इतना है कि mountकोई विकल्प नहीं है। एक सोचा के बाद: विकल्पों के साथ आप माउंट अंक बनाते हैं, इसके बिना उन्हें सूचीबद्ध करता है, मैं एक बेहतर सूची उपकरण की उम्मीद कर रहा था। जैसा कि हम देखते हैं कि @mikeserv ने हमें दिखाया है findmnt
ctrl-alt-delor

0

यदि आप जीएनयू कोरुटिल्स डीएफ के पूरी तरह से प्राचीन संस्करण का उपयोग नहीं करते हैं, तो echo $(df . --output=target | tail -n 1)काम करता है। इसी तरह stat -c '%m' ., हालांकि मैं ध्यान देता हूं कि https://linux.die.net/man/1/stat में %mप्रारूप विकल्प के प्रलेखन का अभाव है।

इस प्रकार से करना थकाऊ होता है: उपरोक्त दोनों में से कोई भी स्टेट के बीएसडी या सिगविन संस्करणों के साथ काम नहीं करेगा। यदि यह माउंट पॉइंट्स के पथों में रिक्त स्थान की संभावना के लिए नहीं थे, df -P . | tail -1 | awk '{ print $NF}'तो यह अच्छा होगा, लेकिन अक्सर USB फ्लैश ड्राइव में वॉल्यूम नाम के स्थान होते हैं, जो संभवतः माउंट पथ में दिखाई देंगे और इसे तोड़ देंगे। पोर्टेबिलिटी के लिए, पर्ल व्यावहारिक रूप से हर जगह स्थापित है और CPAN में मॉड्यूल Sys :: Filesystem :: MountPoint है जो वांछित कार्यक्षमता प्रदान करता है।


क्या आप हमें बता सकते हैं कि echo $()कमांड में क्या जोड़ता है?
ctrl-alt-delor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.