Jestem nowy w systemie Linux, chcę skopiować plik ze zdalnego do systemu lokalnego ... teraz używam polecenia scp w systemie Linux. Mam kilka folderów lub nazw plików ze spacjami, kiedy próbuję skopiować plik, wyświetla komunikat o błędzie: „Brak takiego pliku lub katalogu”
Próbowałem:
scp [email protected]:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
Widziałem jakieś referencje online, ale nie rozumiem doskonale, czy ktoś może w tym pomóc?
Jak mogę uciec spacji w nazwie pliku lub katalogu podczas kopiowania ...
Odpowiedzi:
Zasadniczo musisz uciec z niego dwa razy, ponieważ ucieka on lokalnie, a następnie na odległym końcu.
Istnieje kilka opcji, które możesz zrobić (w bash):
źródło
scp [email protected]:'$(ls -t | head -1)' .
pobieranie ostatnio utworzonego pliku na serwerze lubscp [email protected]:'dir/*.{xml,pdf}' .
pobieranie wszystkich plików xml i pdf ze zdalnego katalogu. Ogólnie wolę to niż wygodę w przypadku plików, które mają spacje. Pliki ze spacjami zawsze przeszkadzają.Pracuje
nie działa
Powodem jest to, że ciąg jest interpretowany przez powłokę przed przekazaniem ścieżki do polecenia scp. Kiedy więc dotrze do pilota, pilot szuka ciągu z nieoznaczonymi cudzysłowami i kończy się niepowodzeniem
Aby zobaczyć to w akcji, uruchom powłokę z opcjami -vx, tzn
bash -vx
. Wyświetli interpolowaną wersję polecenia podczas jego uruchamiania.źródło
"
lub pojedynczy'
działają tak samoMożesz także zrobić coś takiego:
Pierwszy poziom cytatów zostanie zinterpretowany przez scp, a następnie drugi poziom cytatów zachowa spacje.
źródło
Użyj 3 ukośników odwrotnych, aby uciec spacji w nazwach katalogów:
scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads
należy skopiować do
Downloads
katalogufile
z nazwanego zdalnego katalogudirectory with spaces
.źródło
Miałem ogromne trudności z uruchomieniem tego dla zmiennej powłoki zawierającej nazwę pliku z białymi spacjami. Z jakiegoś powodu za pomocą
jak w odpowiedzi @ Adriana wydaje się, że zawodzi.
Okazuje się, że to, co działa najlepiej, to użycie rozszerzenia parametrów do dodania ukośników odwrotnych do białych znaków , jak pokazano poniżej.
źródło
file="${file//\ /\\\ }"
Przepraszam, że użyłem tego pytania o Linuksa, aby umieścić tę wskazówkę dla programu PowerShell w systemie Windows 10: znak spacji uciekający z ukośnikami odwrotnymi lub otaczający cytatami nie działał dla mnie w tym przypadku. Nie wydajne, ale rozwiązałem go za pomocą „?” char zamiast:
dla pliku „tasks.txt Jun-22.bkp” Pobrałem go za pomocą „tasks.txt? Jun-22.bkp”
źródło