Problem
Podczas kopiowania plików za pomocą cp -H
lub cp -L
otrzymuję te same wyniki:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Ta odpowiedź tutaj opisuje obie opcje jako podobne UNLESS używane w połączeniu z -R
. Nie dla mnie. Soft- jako pliki dowiązane stają się kopiami plików, które wskazują na źródło.
Pytanie :
Jakie jest właściwe użycie cp -H
i cp -L
? Czy to jest oczekiwane zachowanie?
Moja próba rozwiązania :
man cp
mówi mi to samo dla obu opcji, ale info cp
jest sformułowanie czyni go jeszcze bardziej mylące dla mnie. Może może mi pomóc to trochę rozwiązać:
-H
Jeśli argument wiersza poleceń określa dowiązanie symboliczne, skopiuj wskazany plik zamiast samego dowiązania symbolicznego . Jednak skopiować (zachowując swój charakter) dowolny link symboliczny , który jest napotkany przez rekurencyjnego przechodzenia.
Brzmi to dla mnie jak sprzeczność: myślę, że » naturą dowiązania symbolicznego « jest to, że wskazuje gdzieś…
-L, --dereference
Podczas kopiowania z nich korzystaj z dowiązań symbolicznych. Dzięki tej opcjicp
nie można utworzyć dowiązania symbolicznego. Na przykład dowiązanie symboliczne (do zwykłego pliku) w drzewie źródłowym zostanie skopiowane do zwykłego pliku w drzewie docelowym.
Wiem, że dowiązanie symboliczne nie jest zwykłym plikiem, ale… Przyznaję, że omawia mnie to wyjaśnienie.
info cp
i starałem się zorientować, co właściwie oznacza wybór słów w tej opcji & ndash; i o czym jest ten post. info cp
info cp
, wyszukaj-R
. Mówi:Copy directories recursively.
Ale testujesz z nie-katalogami. Różnica polega na tym, co znajduje się w katalogach, które kopiujesz, a nie na argumentach wiersza poleceń.