Zastanawiam się, dlaczego to dokładne polecenie w pliku dokera kopiuje wszystkie źródłowe pliki katalogu do miejsca docelowego zamiast kopiować tylko cały katalog.
holms
4
Uważam, że „/” na końcu robi różnicę i może to tłumaczyć twoje wrażenia. Jeśli źródło zawiera ukośnik końcowy, skopiuje tylko to, co znajduje się w katalogu. Jeśli nie zawiera ukośnika końcowego, skopiuje również katalog, a następnie zawartość w nim zawartą. Moja pamięć polega na tym, że zachowanie to różni się w zależności od polecenia, a może trochę w zależności od systemu operacyjnego. Oto odniesienie z więcej informacji.
OllieBrown
23
Powiedziałbym, że jeśli nie chcesz dołączyć źródła i chcesz się upewnić, że wszystko zostało skopiowane (dowiązania symboliczne, ukryte pliki) bez kopiowania źródłowego folderu nadrzędnego, użyj -ra source /. Miejsce docelowe. Dzięki temu zawartość folderu zostanie skopiowana, ale nie sam folder macierzysty, co czasem jest przydatne. Różnica polega na /.
muni764
Wydaje się to również działać poprawnie, jeśli katalogi, które mają zostać skopiowane, są dowiązaniami symbolicznymi, co było moim przypadkiem użycia.
Gdalya,
3
Zwróć uwagę na znaczenie „Slash dot” w twoim źródle cp -r src/. dest, ponieważ wiem, że jest wspomniane, ale nadal wydaje mi się, że tęsknię za każdym razem.
bbeecher,
368
Szukasz cppolecenia. Musisz zmienić katalogi, aby znaleźć się poza katalogiem, który próbujesz skopiować.
Jeśli katalog, który kopiujesz, nazywa się dir1i chcesz go skopiować do swojego /home/Picturesfolderu:
cp -r dir1/ ~/Pictures/
Linux rozróżnia małe i wielkie litery, a także potrzebuje /po każdym katalogu, aby wiedzieć, że nie jest to plik. ~jest znakiem specjalnym w terminalu, który automatycznie przekształca się w katalog domowy bieżącego użytkownika. Jeśli chcesz wiedzieć, w którym katalogu się znajdujesz, użyj polecenia pwd.
Jeśli nie wiesz, jak korzystać z polecenia systemu Linux, istnieje strona podręcznika, do której możesz się odwołać, wpisując:
man [insert command here]
na monit terminalu.
Ponadto, aby automatycznie uzupełniać długie ścieżki plików podczas pisania w terminalu, możesz nacisnąć Tabpo rozpoczęciu wpisywania ścieżki i albo zostanie wyświetlony wybór, albo wstawi ona pozostałą część ścieżki.
W celu dalszego wyjaśnienia, -ropcja w tym spowoduje kopiowanie katalogów rekurencyjnie.
TVann
5
Czy PO nie określają, że on został przy użyciu cp -rpolecenia, ale to nie działa prawidłowo?
MD XF,
4
Powodem, dla którego podałem informacje o stronach podręcznika, jest to, że te flagi mogą być zależne od dystrybucji. Jednak w większości przypadków okazuje się, -r, --recursive, i -Rsą równoważne. Daje to również częste pułapki itp., Co jest miłe.
Alex W
6
Jeśli chcesz przenośnie skopiować KATALOG, a nie tylko jego zawartość, zostaw końcowy myślnik w folderze źródłowym, tj. cp -r dir1 ~/Pictures/
Odpowiedzi:
Opcja, której szukasz, to
-R
.destination
nie istnieje, zostanie utworzony.-R
środkicopy directories recursively
. Możesz także użyć,-r
ponieważ nie uwzględnia wielkości liter./
zgodnie z komentarzem @ muni764 .źródło
cp -r src/. dest
, ponieważ wiem, że jest wspomniane, ale nadal wydaje mi się, że tęsknię za każdym razem.Szukasz
cp
polecenia. Musisz zmienić katalogi, aby znaleźć się poza katalogiem, który próbujesz skopiować.Jeśli katalog, który kopiujesz, nazywa się
dir1
i chcesz go skopiować do swojego/home/Pictures
folderu:Linux rozróżnia małe i wielkie litery, a także potrzebuje
/
po każdym katalogu, aby wiedzieć, że nie jest to plik.~
jest znakiem specjalnym w terminalu, który automatycznie przekształca się w katalog domowy bieżącego użytkownika. Jeśli chcesz wiedzieć, w którym katalogu się znajdujesz, użyj poleceniapwd
.Jeśli nie wiesz, jak korzystać z polecenia systemu Linux, istnieje strona podręcznika, do której możesz się odwołać, wpisując:
na monit terminalu.
Ponadto, aby automatycznie uzupełniać długie ścieżki plików podczas pisania w terminalu, możesz nacisnąć Tabpo rozpoczęciu wpisywania ścieżki i albo zostanie wyświetlony wybór, albo wstawi ona pozostałą część ścieżki.
źródło
-r
opcja w tym spowoduje kopiowanie katalogów rekurencyjnie.cp -r
polecenia, ale to nie działa prawidłowo?-r
,--recursive
, i-R
są równoważne. Daje to również częste pułapki itp., Co jest miłe.cp -r dir1 ~/Pictures/
Posługiwać się:
źródło
demo1_copy
jeszcze nie istniałem$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/