Для защиты меня, если я делаю ошибку во вводе пути каталога/имени файла, я ищу способ препятствовать тому, чтобы mv делал что-либо, если источник и целевые файлы существуют на отдельных разделах.
Я не вижу опций в странице справочника. Google, казалось, не помог. Возможно, что-то как
sourceDrive=something sourceFile
destinationDrive=something destinationFile
if [ $sourceDrive == $destinationDrive ]
mv sourceFile destinationFile
fi
Я просто должен найти способ получить раздел, каталог/файл идет
Вы почти наверняка смотрите на запись сценария, чтобы сделать это.
Для файлов Вы могли hardlink их и если это было успешно, удалите связь с оригиналом. Это не будет работать на каталоги (потому что большинство файловых систем запрещает hardlinking каталоги).
Минимально протестированный, тривиальный сценарий, который мог бы сделать это:
#/bin/sh
if ln "$1" "$2" ;
then
unlink "$1"
fi
Альтернатива должна проверить файловую систему, связанную с каждым путем.
Здесь я мог бы запустить с чего-то вроде
#! /bin/sh
STAT=/usr/bin/stat
v1=$( $STAT -f "%d" "$1" )
v2=$( $STAT -f "%d" "$2" )
if [[ $v1 == $v2 ]]
then
mv "$1" "$2"
fi
ПРЕДУПРЕЖДЕНИЕ! Что имеет ошибку, если Вы указываете каталог самого верхнего уровня файловой системы как цель. Исправление ошибки является тонким, но это могло бы пойти как это: проверьте, существует ли место назначения уже. Если нет touch
это. Затем статистика место назначения. Если копия перестала работать, и необходимо было создать цель, чтобы протестировать ее, удалить цель.