Есть ли способ , чтобы сказать , cp
чтобы --link
(т.е. создавать жесткие ссылки), но падать обратно в том случае , когда я пытаюсь жесткие ссылки между устройствами? Связи между устройствами невозможны и могут привести cp
к сбою.
Причина, по которой я спрашиваю, заключается в том, что я хотел бы использовать это в a GNUmakefile
и предпочел бы удобочитаемую командную строку, а не какую-нибудь сложную и длинную (или, если на то пошло, функцию).
Вопрос для GNU coreutils (7.4 и 8.13).
Примечание: сейчас обходной путь будет выглядеть примерно так (GNU make recipe синтаксис):
cp -fl $^ $@ || cp -f $^ $@
Это, конечно, будет выдавать ложные сообщения об ошибках в случае соединений между устройствами, хотя в этом случае при втором cp
вызове произойдет сбой . Кроме того, затем это расширяется (исходная форма выглядит читабельной в конце концов), он больше не будет слишком читабельным.
$$
в моем случае, конечно, потому что это внутри макроса. И ваша линия, конечно, является вариацией того, что я использую. Но, по крайней мере, я знаю, что это не вариант, и мне нужно предоставить свой собственный.ln
и использоватьcp --reflink=auto
(см. Мой обновленный ответ).