OS X'te bir mountpoint programı var mı?


5

Linux sistemleri, /bin/mountpointbelirli bir dizinin bir birim için bir bağlantı noktası olup olmadığını kontrol etmek için kullanılabilir. Mac OS X'in eşdeğer bir programı var mı, yoksa bu kontrolü yapmanın başka bir yolu var mı?

Yanıtlar:


5

mountKontrol etmek istediğiniz dizinin çıktısını (sonradan onboşluklarla çevrilmiş olarak) çözümleyebilirsiniz. Bununla birlikte, sembolik bağlardan dolayı farklı yolları kaldıramazsınız. Burada bir çözüm var , ancak bu yaklaşımı zorlaştırıyor.


Alternatif olarak, diskutil infosıfır değilse çıkış noktası değildir.

#!/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

Hangi nedenle olursa olsun gerçek mountpoint'i istiyorsanız , aşağıdakileri yapın:

  1. İçin kaynaklarını indir sysvinit dan burada .
  2. src/mountpoint.cİstediğiniz bir metin düzenleyicide açın ve#include <sys/types.h>
  3. Xcode ve komut satırı araçlarının yüklü olduğundan emin olun
  4. Koşmak cc mountpoint.c -o mountpoint && sudo cp mountpoint /bin
  5. İsteğe bağlı olarak kopyalamak man/mountpoint.1için /usr/share/man/man1.

Bu bir / hayır / sanırım… şimdilik bu cevabı kabul edeceğim ve sadece kullanacağım diskutil info. Gerçek olanı umuyordum mountpoint, ama neden işleri karmaşıklaştırıyorsun? Ayrıca, test'-ef modunun sembolik bağlantıları takip ettiğine (en azından bu sistemde) dikkat edilmelidir , böylece asıl montaj noktasını çıkartabilir diskutil infove sonra kontrol edebilirsiniz [ $1 -ef $mountpoint ].
Blacklight Shining

@BlacklightShining İşte, gerçek mountpoint. Oldukça önemsiz. Yine de konuyu göremiyorum.
Daniel Beck

mountpoint-qÇıktıyı elemek için bir seçeneği kabul eder , bu da herhangi bir şeyi yeniden yönlendirme ihtiyacını ortadan kaldırır. Yeniden yönlendirmeden daha temiz ve IMO komut dosyalarında daha iyi görünüyor. (Gerçekten şimdi inşa etmek istemiyorum ama bu yüzden koşmaya devam edeceğim diskutil info.)
Blacklight Shining

Gerçek mountpoint kullanmanın bir başka nedeni de bu bash betiğinin f.ex ile çalışmamasıdır. sshfs veya diğer uzak montaj noktaları
Pavel K.

0

dfHerhangi bir dizin için aygıt düğümünü ve bağlama noktasını almak için komutu kullanabilirsiniz . Yalnızca montaj noktasını elde etmek için şunu kullanın:

df "/path/to/any/dir/you/need" | sed -nE -e' s|^.+% +(/.*$)|\1|p'

Bu sed yapı, yola boşluk içerebilecek montaj noktası elde etmek için kullanılır. OS X'in, GNU sed (gayri resmi sed) (GNU sed '-r' seçeneği olarak) tarafından da desteklenmeyen '-E' seçeneğinin uzatılmış regexps seçeneğinin kullanılmasına dikkat edin. Taşınabilir komut:

df "/path/to/any/dir/you/need" | sed -n -e' s|^.*% \{1,\}\(/.*$\)|\1|p'

Bash işlevlerinde kullanabilirsiniz:

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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.