क्या OS X में माउंटपॉइंट प्रोग्राम है?


5

लिनक्स सिस्टम में एक /bin/mountpointजांच करने के लिए इस्तेमाल किया जा सकता है कि क्या कोई विशेष निर्देशिका वॉल्यूम के लिए माउंट बिंदु है। क्या मैक ओएस एक्स में एक समान कार्यक्रम है, या इस चेक को चलाने का कोई और तरीका है?

जवाबों:


5

आप 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

यदि, आप असली माउंटपॉइंट के लिए जो भी कारण चाहते हैं, निम्न कार्य करें:

  1. यहाँ से sysvinit के स्रोत डाउनलोड करें
  2. src/mountpoint.cअपनी पसंद के टेक्स्ट एडिटर में खोलें और जोड़ें#include <sys/types.h>
  3. सुनिश्चित करें कि आपके पास Xcode और उसके कमांड-लाइन उपकरण स्थापित हैं
  4. रन cc mountpoint.c -o mountpoint && sudo cp mountpoint /bin
  5. वैकल्पिक रूप से कॉपी man/mountpoint.1करें /usr/share/man/man1

यह एक / नहीं / है, मुझे लगता है कि ... मैं इस जवाब को अभी और बस उपयोग के लिए स्वीकार करूंगा diskutil info। मैं एक वास्तविक के लिए उम्मीद कर रहा था mountpoint, लेकिन चीजों को जटिल क्यों करता है, हुह? इसके अलावा, यह ध्यान दिया जाना चाहिए कि test's -ef मोड सिम्बलिंक (कम से कम इस सिस्टम पर) का अनुसरण करता है, इसलिए आप वास्तविक माउंट पॉइंट को diskutil infoफिर से निकाल सकते हैं और फिर चेक कर सकते हैं [ $1 -ef $mountpoint ]
ब्लैकलाइट शाइनिंग

@BlacklightShining वहाँ तुम जाओ, असली mountpoint। काफी तुच्छ। हालांकि अभी भी बात नहीं दिख रही है।
डैनियल बेक

mountpoint-qआउटपुट को खत्म करने का एक विकल्प स्वीकार करता है , जो किसी भी चीज़ को पुनर्निर्देशित करने की आवश्यकता को समाप्त करता है। यह पुनर्निर्देशन की तुलना में क्लीनर है और IMO स्क्रिप्ट और इस तरह से बेहतर दिखता है। (मैं वास्तव में इसे बनाने की तरह महसूस नहीं करता, हालांकि, इसलिए मैं दौड़ने के साथ रहूँगा diskutil info।)
ब्लैकलाइट उदय

वास्तविक माउंटपॉइंट का उपयोग करने का दूसरा कारण यह है कि यह बैश स्क्रिप्ट f.ex के साथ काम नहीं करेगी। sshfs या अन्य दूरस्थ माउंट पॉइंट
Pavel K.

0

आप 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
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.