2013-04-23 2 views
3

모든 파일 이름에서 마운트 지점을 반환하는 스크립트 (getmpoint)를 만들고 싶습니다.파일 이름의 마운트 지점 - 이동식

제 1 회 아이디어는, 같은 : 구문 분석 출력이 형성 df 또는 fstab 때문에, 예를 들어 보인다 쉽지 않다 해석 : 나는 (장치를 받고) stat를 사용하여 몇 가지 아이디어를 가지고

getmpoint ../../../some/path/tmp/somefile 
getmpoint /tmp/somesymlink #and want get the mountpoint where the real file is 
getmpoint/

-하지만 나는 길을 잃었다. 이 문제를 해결하는 방법에 대한 몇 가지 지침이 필요합니다.

다른 질문은 stat 명령보다 Freebsd-statLinux-stat에서 다릅니다. 여기에 어떤 휴대용 방식이 있습니까?

마찬가지로, 무엇에 대해 : stat없이 - 그래서 - 파일이 존재하지 않고

getmpoint /some/real/path/up/to/here/but/nonexistent_file 

에만 경로에서 마운트 지점을 얻을 좋을 것이다.

조언이 있으십니까? (아마 스크립트 나 자신을 수 있어요 -하지만 ... 어떻게 수행하는 몇 가지 가이드가 필요)

답변

2

이 시도 :

getmpoint.sh을 PARAM

#!/bin/bash 

for path 
do 
    orig=$path 

    #find the existing path component 
    while [ ! -e "$path" ] 
    do 
     path=$(dirname "$path") 
    done 

    #get a real file from a symlink 
    [ -L "$path" ] && path=$(readlink "$path") 

    # use "portable" (df -P) - to get all informatons 
    # 512-blocks  Used Available Capacity Mounted on 
    read s512 used avail capa mounted <<< $(df -P "$path" | awk '{if(NR==2){ print $2, $3, $4, $5, $6}}') 

    echo "Filename: $orig" 
    echo "Mounted: $mounted" 
    echo "Available blocks: $avail" 
done 
+0

와 파일 이름을 기대 고맙습니다! 좋은 해결책 및 휴대용 너무. – jm666

+0

Hehe, nice 편집 :) 내가 할 수 있으면 그것을 upvote 것;). 나는'df ...와 같은 것을 시도했다. 꼬리 - n 1' 그리고 이것이 효과가 없었 놀랐다. 그러나 'awk' 솔루션이 더 마음에 들었지만'sed '1d'는 잘 작동 할 것입니다. 추가 파싱 작업없이 여섯 번째 열 (마운트 됨)을 제공합니다. – hek2mgl

+0

네 - 파일 이름에 공백이 포함되어있을 때 읽기에는 일반적인 문제가 있습니다. 다시 awk에 :) – jm666