%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%B2%98%EB%A6%AC%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
파일 위치를 scp 하위 프로세스에 전달하는 Python 스크립트를 작성 중입니다. 다 좋은데, /
경로에 '가 두 개 있도록 파일 이름과 경로를 연결하게 될 수도 있는 상황에 처해 있습니다. 파일 구분 기호가 여러 개 있어도 bash는 상관하지 않는다는 것을 알고 있지만 이를 어떻게 수정할 수 있는지 알고 싶습니다. bash가 추가 /
s를 제거했습니까, 아니면 실제로 중요하지 않습니까?
이 질문을 하는 이유는 연결할 때 추가 코드 줄을 확인하는 시간을 절약할 수 있기 때문입니다 /
. 별거 아닌거 알면서도 궁금하기도 하네요. cd //usr
경로에 여러 s를 사용하는 것이 cd /usr
중요할 수 있음 을 의미하는 행(대신)을 포함하는 bash 스크립트가 있습니다./
답변1
여러 슬래시가 허용되며 단일 슬래시와 동일합니다. ~에서단일 Unix 사양(버전 4),기본 정의 §3.271 경로 이름: "여러 개의 연속 슬래시는 하나의 슬래시와 동일한 것으로 간주됩니다."
한 가지 예외가 있습니다. 경로 이름이 두 개의 연속 슬래시 문자로 시작하는 경우 선행 슬래시 문자 뒤의 첫 번째 구성 요소는 구현에서 정의된 방식으로 해석될 수 있습니다. (인용하다:기본 정의 §4.13 경로 이름 확인). Linux 자체에서는 이 작업을 수행하지 않지만 일부 응용 프로그램에서는 수행할 수 있고 다른 UNIX 시스템(예: Cygwin)에서는 수행합니다.
경로 이름 끝 부분이 끝나면 /
경로 이름이 디렉토리를 참조하게 됩니다. 존재하다(POSIX 1003.1-2001(Single Unix v4) 기본 정의 §4.11 경로 이름 확인, 후행은 /
후행과 동일합니다 /.
.POSIX 1003.1-2008(Single Unix v4) 기본 정의 §4.13/.
존재하지 않는 디렉토리의 경우(예: mkdir foo/
작동하지만 작동 mkdir foo/.
하지 않는 경우) 와 동등하게 만들기 위한 요구 사항을 제거했습니다.이유변경 사항).
디렉토리 항목에서 작동하는 프로그램의 경우 foo
디렉토리에 대한 기호 링크인 경우 전달은 foo/
프로그램이 기호 링크 대신 디렉토리에서 작동하도록 하는 방법입니다.
1 이는 경로 이름 확인(예: 파일에 액세스할 때)에만 적용됩니다. 파일 이름 작업은 다를 수 있습니다. 예를 들어basename
그리고dirname
후행 슬래시를 무시하십시오.
답변2
OS도 그것에 대해 신경 쓰지 않는 것 같습니다. 경로에 //를 사용하여 열기 위해 직접 시스템 호출을 사용하여 C 프로그램을 시도했습니다.
그러나 추가 내용을 찾기 위해 문자열을 스캔할 필요가 없도록 Python 라이브러리 함수 os.path.normpath를 사용하여 정규화할 수 있습니다. 다른 언어에도 비슷한 기능이 있습니다.
http://docs.python.org/library/os.path.html#os.path.normpath
답변3
내가 본 모든 Unix 시스템에서는 Single 과 동일 /
하지만유닉스 표준지정하다
두 개의 연속 슬래시로 시작하는 경로 이름은 구현 정의 방식으로 해석될 수 있지만 두 개 이상의 선행 슬래시는 단일 슬래시로 처리되어야 합니다.
따라서 시스템에 따라 특별하게 취급될 수도 있습니다. (일부 이전 Unix 버전에서는 원격 파일 시스템 액세스에 이중 선행을 사용했으며 /
여전히 일부에서는 그렇게 할 수 있습니다.)
답변4
차이 없음.
여러 개의 슬래시는 무시됩니다(효과가 없음). 예:
ls -al //usr///////bin/sed