3

想要制作一个脚本(称为getmpoint),它将从任何文件名返回挂载点。

第一个想法,例如:从dfor 解析输出fstab并不像看起来那么容易,因为例如:

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

我有一些使用stat(获取设备)的想法 - 但我迷路了。需要一些指示如何解决这个问题。

另一个问题是Freebsd-statLinux-statstat上的命令不同。这里有便携的方式吗?

同样,怎么样:

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

只从路径获取挂载点会很好 - 没有文件存在 - 所以没有stat.

有什么建议吗?(我可能自己可以制作一个脚本 - 但需要一些指导如何做......)

4

1 回答 1

3

尝试这个:

getmpoint.sh,期望文件名作为参数

#!/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
于 2013-04-23T21:19:52.320 回答