Linux sistemleri, /bin/mountpoint
belirli 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ı?
Linux sistemleri, /bin/mountpoint
belirli 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:
mount
Kontrol etmek istediğiniz dizinin çıktısını (sonradan on
boş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 info
sı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:
src/mountpoint.c
İstediğiniz bir metin düzenleyicide açın ve#include <sys/types.h>
cc mountpoint.c -o mountpoint && sudo cp mountpoint /bin
man/mountpoint.1
için /usr/share/man/man1
.mountpoint
. Oldukça önemsiz. Yine de konuyu göremiyorum.
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
.)
df
Herhangi 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
}
diskutil info
. Gerçek olanı umuyordummountpoint
, 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ı çıkartabilirdiskutil info
ve sonra kontrol edebilirsiniz[ $1 -ef $mountpoint ]
.