때로는 현재 작업 디렉토리를 참조로 사용하여 Linux 도구에 대한 명령 행 매개 변수와 같은 긴 절대 경로를 단축 할 수 있습니다.
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
이 도전에서는 두 가지 매개 변수를받는 함수 나 프로그램을 만들어야합니다.
- Linux 형식을 사용하는 절대 경로 (로 시작
/
) - 동일한 형식을 사용하는 현재 디렉토리
출력은 다음 중 더 짧습니다.
- 입력 1은 변경되지 않았습니다
- 절대 경로와 동일한 파일 / 디렉토리를 참조하는 상대 경로
좋은 점 :
- 운영 체제가 Linux와 호환되는 경우 입력으로받는 대신 시스템의 현재 디렉토리를 사용할 수 있습니다
- 입력에 영숫자 (및 경로 구분자) 만 포함되어 있다고 가정 할 수 있습니다.
- 입력 절대 경로
/
끝에 경로 구분 기호가 없다고 가정 할 수 있습니다 - 입력 현재 디렉토리
/
끝에 경로 구분 기호가 있다고 가정 할 수 있습니다 - 절대 경로가 기존 파일을 참조하거나 파일의 일부가 액세스 가능한 디렉토리라고 가정 할 수 없습니다. 그러나 현재 디렉토리는 유효하다고 가정 할 수 있습니다.
- 어느 경로 근처에도 심볼릭 링크가 없다고 가정 할 수 있습니다-심볼릭 링크를 다루는 특별한 방법이 필요하지 않기 때문에
- 입력 중 하나가 루트 디렉토리 인 경우를 지원할 필요가 없습니다.
- "현재 디렉토리"는 다음과 같이 출력되어야합니다
.
(빈 문자열은 유효하지 않습니다)
테스트 사례 (입력 1, 입력 2, 출력) :
/home/user/mydir/myfile
/home/user
mydir/myfile
/var/users/admin/secret/passwd
/var/users/joe/hack
../../admin/secret/passwd
/home/user/myfile
/tmp/someplace
/home/user/myfile
/dir1/dir2
/dir1/dir2/dir3/dir4
../..
/dir1/dir2
/dir1/dir2
.
나는 이런 식으로 좋아하지만 어떤 사람들은 다른 식으로 그것을 좋아합니다
—
anatolyg
밀접한 관련 .
—
AdmBorkBork
절대 경로와 상대 경로의 길이가 같은 경우 어떻게됩니까?
—
Dennis
이것은 몇 가지 중요한 테스트 케이스를 누락되었습니다
—
나단 메릴
/home/test /home/user/mydir/myfile /home/test
및/a/b /a/b/d/e /a/b
/
끝에 경로 구분 기호가 있다고 가정 할 수 있습니다 ." 그러나 귀하의 예에서는 그렇지 않습니다.