लिनक्स सिस्टम में एक /bin/mountpoint
जांच करने के लिए इस्तेमाल किया जा सकता है कि क्या कोई विशेष निर्देशिका वॉल्यूम के लिए माउंट बिंदु है। क्या मैक ओएस एक्स में एक समान कार्यक्रम है, या इस चेक को चलाने का कोई और तरीका है?
लिनक्स सिस्टम में एक /bin/mountpoint
जांच करने के लिए इस्तेमाल किया जा सकता है कि क्या कोई विशेष निर्देशिका वॉल्यूम के लिए माउंट बिंदु है। क्या मैक ओएस एक्स में एक समान कार्यक्रम है, या इस चेक को चलाने का कोई और तरीका है?
जवाबों:
आप mount
उस निर्देशिका के आउटपुट को पार्स कर सकते हैं जिसे आप चेक करना चाहते हैं (बाद में on
, व्हॉट्सएप द्वारा संलग्न)। यह प्रतीकात्मक लिंक के कारण अलग-अलग रास्तों को संभाल नहीं सकता है, हालांकि। यहां एक समाधान उपलब्ध है , लेकिन यह इस दृष्टिकोण को जटिल बनाता है।
वैकल्पिक रूप से, बाहर निकलने का कोड पढ़ें diskutil info
, यदि यह गैर-शून्य है, तो यह माउंट बिंदु नहीं है।
#!/usr/bin/env bash
[[ $# -eq 1 ]] || { echo "Exactly one argument expected, got $#" ; exit 1 ; }
[[ -d "$1" ]] || { echo "First argument expected to be directory" ; exit 1 ; }
diskutil info "$1" >/dev/null
RC=$?
if [[ $RC -eq 0 ]] ; then
echo "$1 is a mount point"
else
echo "$1 is not a mount point"
fi
exit $RC
यदि, आप असली माउंटपॉइंट के लिए जो भी कारण चाहते हैं, निम्न कार्य करें:
src/mountpoint.c
अपनी पसंद के टेक्स्ट एडिटर में खोलें और जोड़ें#include <sys/types.h>
cc mountpoint.c -o mountpoint && sudo cp mountpoint /bin
man/mountpoint.1
करें /usr/share/man/man1
।mountpoint
। काफी तुच्छ। हालांकि अभी भी बात नहीं दिख रही है।
mountpoint
-q
आउटपुट को खत्म करने का एक विकल्प स्वीकार करता है , जो किसी भी चीज़ को पुनर्निर्देशित करने की आवश्यकता को समाप्त करता है। यह पुनर्निर्देशन की तुलना में क्लीनर है और IMO स्क्रिप्ट और इस तरह से बेहतर दिखता है। (मैं वास्तव में इसे बनाने की तरह महसूस नहीं करता, हालांकि, इसलिए मैं दौड़ने के साथ रहूँगा diskutil info
।)
आप df
किसी भी निर्देशिका के लिए डिवाइस नोड और माउंट पॉइंट प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं । अकेले माउंट पॉइंट पाने के लिए, उपयोग करें:
df "/path/to/any/dir/you/need" | sed -nE -e' s|^.+% +(/.*$)|\1|p'
इस sed निर्माण का उपयोग आरोह बिंदु प्राप्त करने के लिए किया जाता है जिसमें पथ में स्थान शामिल हो सकता है। OS X के सेड एक्सटेंडेड रेगेक्स ऑप्शन '-E' का नोटिस उपयोग, जो अनौपचारिक रूप से GNU sed (GNU sed '-r' विकल्प के रूप में) द्वारा समर्थित है। पोर्टेबल कमांड:
df "/path/to/any/dir/you/need" | sed -n -e' s|^.*% \{1,\}\(/.*$\)|\1|p'
आप इसे बाश कार्यों में उपयोग कर सकते हैं:
get_mount_point() {
local result="$(df "$1" | sed -n -e' s|^.*% \{1,\}\(/.*$\)|\1|p' 2>/dev/null)" || return 2
[[ -z "$result" ]] && return 1
echo "$result"
}
is_mount_point() {
[[ -z "$1" ]] && return 2
[[ "$1" != "$(get_mount_point "$1")" ]] && return 1
return 0
}
diskutil info
। मैं एक वास्तविक के लिए उम्मीद कर रहा थाmountpoint
, लेकिन चीजों को जटिल क्यों करता है, हुह? इसके अलावा, यह ध्यान दिया जाना चाहिए किtest
's -ef मोड सिम्बलिंक (कम से कम इस सिस्टम पर) का अनुसरण करता है, इसलिए आप वास्तविक माउंट पॉइंट कोdiskutil info
फिर से निकाल सकते हैं और फिर चेक कर सकते हैं[ $1 -ef $mountpoint ]
।