Gibt es eine Möglichkeit, dies cpzu 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 cpzum Fehlschlagen führen.
Der Grund, den ich frage, ist, dass ich dies in einer verwenden GNUmakefilemö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 cpAufruf 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.