최근 Windows 10에는 Windows용 Linux 하위 시스템 이니셔티브의 일부로 bash 셸이 추가되었습니다. 이것은 일반적으로 훌륭하지만 흥미로운 문제에 직면했습니다. Windows 파일 시스템은 파일 이름에 콜론/기타 특수 문자를 허용하지 않습니다. 그래서 다음과 같은 것을 시도할 때 scp
:
scp user@remote:/path/to/file-2016-09-07_08:45:45.txt .
scp에서 잘못된 인수 오류가 발생합니다. 이를 해결하는 한 가지 방법은 특수 문자 없이 새 파일 이름을 지정하는 것입니다. 그러나 다음과 같은 작업을 수행하려고 할 때는 번거롭습니다.
scp user@remote:/path/to/file-2016-09-07* .
모든 파일에서 잘못된 매개변수 오류가 발생하기 때문입니다. _
예를 들어, .bashrc 파일에 일부 코드를 넣어 scp 인수를 허용하고 문제가 있는 각 문자를 로 바꿀 수 있습니까? 동등하다
scp user@remote:/path/to/file-2016-09-07_08:45:45 file-2016-09-07_08_45_45.txt
하지만 휴대용인가요 *
?
답변1
이름을 변수에 넣으면 이름에 대한 매개변수 대체를 수행할 수 있습니다. 그러나 쉘은 원격 파일 시스템에서 scp
"볼 수 있는" 와일드카드 확장을 "보지" 않으므로 쉘 별칭은 아무런 효과가 없습니다.
설명을 기반으로 요청한 작업을 수행하는 스크립트를 작성할 수 있습니다. 예를 들어 다음과 같습니다.
ssh
원격 파일 이름 목록을 얻으 려면- 루핑 중...
- 로컬 파일 이름을 형성하고
- 실제 원격/로컬 파일을 복사하려면 scp를 사용하세요.
답변2
원본 파일 이름에 대체 유니코드 문자를 사용하여 이름 지정 문제 없이 복사할 수도 있습니다.
- 콜론의 경우 다음을 사용합니다.꞉ - 수정자 콜론: U+A789 - 유니코드 문자표.
- 물음표의 경우 다음을 사용하세요.? - 전각 물음표: U+FF1F - 유니코드 문자표.
- 별표의 경우⁎ - 낮은 별표: U+204E - 유니코드 문자표.