是否有一种方法来检查两个文件是否位于Mac上bash中的同一个卷上?或者,等效地,检查给定的文件是否在引导卷上?
我尝试使用ln并检查它是否失败,但有时ln失败的原因不是cross-device link错误。
我还尝试使用一个函数来打印文件的路径,然后检查该路径是否包含/Volumes/作为前缀,但并不是所有的远程卷都被挂载到/Volumes/。
还有别的办法吗?
发布于 2015-04-28 17:01:02
您是在问两个文件是否位于同一个文件系统上。检查这一点的标准方法是对这两个文件调用stat()系统调用,并检查它们是否具有相同的st_dev值,其中st_dev标识文件所在的设备。
您可以在bash中使用stat命令来执行此测试:
device=$(stat -f '%d' /path/to/file)因此,要检查两个文件是否位于同一个文件系统上:
dev1=$(stat -f '%d' /path/to/file1)
dev2=$(stat -f '%d' /path/to/file2)
if [ "$dev1" = "$dev2" ]; then
echo "file1 and file2 are on the same filesystem"
fi上述操作在OS下运行;同样的检查可以在Linux上执行,但是stat命令需要-c或--format而不是-f。
发布于 2015-04-28 17:06:13
用df
f1="$(df -P /path/to/file1.txt | awk 'NR!=1 {print $1}')"
f2="$(df -P /path/to/file2.txt | awk 'NR!=1 {print $1}')"
if [[ "$f1" = "$f2" ]]; then
echo "same filesystem"
else
echo "different filesystem"
fihttps://stackoverflow.com/questions/29925065
复制相似问题