Gibt es eine Möglichkeit, dies cp
zu erkennen --link
(dh Hardlinks zu erstellen), aber in dem Fall, in dem ich versuche, Hardlinks zwischen Geräten zu verwenden, zurückzugreifen? Geräteübergreifende Verbindungen sind nicht möglich und würden cp
zum Fehlschlagen führen.
Der Grund, den ich frage, ist, dass ich dies in einer verwenden GNUmakefile
möchte und eine lesbare Befehlszeile einer verschlungenen und langwierigen (oder einer Funktion) vorziehen würde.
Die Frage betrifft GNU-Coreutils (7.4 und 8.13).
Hinweis: Im Moment wäre die Problemumgehung ungefähr so (GNU-Rezept-Syntax erstellen):
cp -fl $^ $@ || cp -f $^ $@
Dies führt natürlich zu falschen Fehlermeldungen bei Verbindungen zwischen Geräten, obwohl dies beim zweiten cp
Aufruf erfolgreich ist. Außerdem wird dies dann erweitert (das Quellformular sieht schließlich lesbar aus) und es wird nicht mehr zu lesbar sein.
$$
in meinem Fall ist natürlich, weil dies in einem Makro ist. Und Ihre Linie ist natürlich eine Variation dessen, was ich benutze. Aber zumindest weiß ich auf diese Weise, dass es keine Option gibt und ich meine eigenen bereitstellen muss.ln
und Verwendung verwendencp --reflink=auto
(siehe meine aktualisierte Antwort).