有没有办法在Mac OS X上的bash中检查两个文件是否在同一个卷上? 或者,等效地检查给定文件是否在启动卷上?
我已尝试使用ln
并检查其是否失败,但有时ln
因cross-device link
错误以外的其他原因而失败。
我还尝试使用打印文件路径的函数,然后检查该路径是否包含/Volumes/
作为前缀,但并非所有远程卷都挂载到/Volumes/
。
还有其他办法吗?
答案 0 :(得分:7)
您问的是两个文件是否在同一个文件系统上。检查此问题的规范方法是在两个文件上调用$(document).ready(function(){
$('button').click(function(){
$(":checked",".formerasemessage").each(function () {
var par_div = $(this).closest(".demo"); //finding the closest div
var form = $(this).closest('form');
form.validate({submitHandler: function () {
$.post('remove.php', form.serialize(), function (data) {
form.hide("slow");
par_div.hide('slow'); //hide the div
});
}
}).submit();
});
});
});
系统调用,并检查它们是否具有相同的stat()
值,其中st_dev
标识文件所在的设备。
您可以在bash中使用st_dev
命令来执行此测试:
stat
因此,要检查两个文件是否在同一个文件系统上:
device=$(stat -f '%d' /path/to/file)
以上在OS X下工作;可以在Linux上执行相同的检查,但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
命令需要stat
或-c
而不是--format
。
答案 1 :(得分:1)
使用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"
fi