Câu trả lời:
Dựa trên Cách kiểm tra xem hai thư mục hoặc tệp có thuộc cùng một hệ thống tệp không ( /unix// ):
Trong một kịch bản shell trên Linux, nó có thể được thực hiện với stat :
stat -c "%d" /path # returns the decimal device number
Vì vậy, bạn có thể:
file1=$(stat -c "%d" /path/file1)
file2=$(stat -c "%d" /path/file2)
rồi so sánh.
Bạn cũng có thể viết như thế này:
if [ $(stat -c "%d" /path/file1) -eq $(stat -c "%d" /path/file1) ]
then
# mv sentence
fi
Tùy chọn khác. Cũng lấy từ câu hỏi Stackexchange :
if [[ $(df -P /path/file1 | tail -1) = $(df -P /path/file2 | tail -1) ]]
then
# echo "same filesystem"
# mv sentence
fi
$(...)
thay vì `...`
. Cái sau bị phản đối có lợi cho cái trước.
stat
tôi đôi khi rất khó khăn, ít nhất là với SunOS. Nhưng là Linux tôi hy vọng nó tương thích. Với Ubuntu 12 của tôi thì ổn.
%d
ra các giá trị khác nhau cho các thư mục khác nhau (cùng phân vùng) thử với của bạn /
và/tmp