Відповіді:
На основі того, як перевірити, чи належать два каталоги або файли до однієї файлової системи ( https://unix.stackexchange.com/ ):
У скрипті оболонки в Linux це можна зробити за допомогою stat :
stat -c "%d" /path # returns the decimal device number
Отже ви можете:
file1=$(stat -c "%d" /path/file1)
file2=$(stat -c "%d" /path/file2)
а потім порівняти.
Ви також можете написати так:
if [ $(stat -c "%d" /path/file1) -eq $(stat -c "%d" /path/file1) ]
then
# mv sentence
fi
Інший варіант. Також взято з питання Stackexchange :
if [[ $(df -P /path/file1 | tail -1) = $(df -P /path/file2 | tail -1) ]]
then
# echo "same filesystem"
# mv sentence
fi
$(...)
замість цього `...`
. Пізніший застарілий на користь першого.
stat
говорить про те, що іноді складно, принаймні, з SunOS. Але будучи Linux, я сподіваюся, що він сумісний. З моїм Ubuntu 12 це добре.
%d
виводить різні значення для різних dirs (навіть одна і та ж перегородка) спробуйте зі своїм /
і/tmp