디렉토리로 부터 마운트한 장치명 얻기

[code:zsghf8e4]
#!/bin/sh
mp=$(mountpoint -d "$1" 2>/dev/null)
if [ -n "$mp" -a $? -eq 0 ]; then
mp=$(readlink /sys/dev/block/"$mp" | xargs basename)
echo "/dev/$mp"
else
exit 1
fi
[/code:zsghf8e4]

mountpoint -d 명령은 디렉토리로 부터, 장치의 고유번호를 출력합니다.
이 고유번호는 /sys/dev/block/고유번호 형태로 심볼릭링크되어 있고, 그것을 읽으면 파일명이 장치명입니다.
일반적으로, cat /proc/mounts | grep – "^\S* 디렉토리" | cut -d " " -f1 이런 식으로 장치명을 구하는데,
문제는 grep이 정규표현식을 사용하기에, 디렉토리명에 정규표현식에서 사용하는 문자가 들어갔을 경우 문제가 발생할 소지가 있습니다.

디렉토리가 마운트위치인지 검정하는 것은 간단합니다.
mountpoint -q "디렉토리" && echo "mounted"

이렇게 간단한 방법이 있었네요!