어떤 위치에서든 루트 또는 홈 디렉터리를 탐색합니다.

어떤 위치에서든 루트 또는 홈 디렉터리를 탐색합니다.

param은 내 입력이고 cat 명령에 추가되므로 기본적으로
eval "cat /a/really/long/path/idk/how/long/$param1"param1을 다른 것으로 변경한 후 무차별 대입을 하지 않고도 home/root에 액세스할 수 있습니다. ../루트로 직접 이동할 수 있는 구문이 있습니까? 아니면 이것이 집이
cat '/a/really/long/path/idk/how/long' + $param1되는 방식이다
cat '/a/really/long/path/idk/how/long/SYNTAX-To-HOME/.bashrc.

답변1

파일 이름의 접미사만 선택할 수 있고 루트 디렉터리에서 시작하는 경로를 표시하려면 충분한 수의 접미사를 사용하는 것이 ../유일한 방법입니다. 루트 중간에서 경로를 "다시 시작"할 수 있는 방법은 없습니다. 또한 파일에서 홈 디렉터리를 참조할 수 있는 방법이 없으므로 사용자의 홈 디렉터리가 이라고 가정하고 이와 유사한 것을 사용해야 합니다 ../../../../../home/username(다시 말하지만, even 사용 ) ...//home/username

일부 응용 프로그램은 파일 이름에 대한 추가 확장을 수행하지만 이는 일반적이지 않습니다. 비교적 일반적인 확장인터렉티브~/응용프로그램은 경로 시작 부분에서 확장됩니다. 명령줄 응용 프로그램은 이 작업도 수행하지 않습니다. 왜냐하면 이 확장은 셸의 작업이기 때문입니다.

필요한 수는 ../심볼릭 링크가 유효 깊이를 변경하므로 제어할 수 없는 접두사의 경로 구성 요소 수일 수도 있고 아닐 수도 있습니다. 예를 들어 /dir, /foo및 가 /foo/bar디렉토리이고 가 심볼릭 /foo/sym링크인 경우 이는 루트 디렉토리입니다. 하지만 심볼릭 링크라면 yes 이고 루트 디렉터리로 돌아가야 합니다 ./dir/foo/bar/../sym/foo/bar/sym/../foo/sym/../..

../경로 길이 제한이 발생하지 않는 한 너무 많아도 해가 되지 않습니다.

또 다른 가능한 접근 방식은 상위 디렉터리에 대한 기호 링크를 사용하는 것입니다. 하지만 그러기 위해서는 그러한 상징이 존재해야 하고, 그것을 이해해야 합니다. 마운트 지점(예 mount --bind / /a/really/long/path/root: )을 사용하면 디렉터리 트리를 벗어날 수도 있습니다.

지금까지 내 답변에서는 파일 이름에 대해 논의했습니다. 주사할 수 있다면쉘 명령, 에서 볼 수 있듯이 eval "cat /a/really/long/path/idk/how/long/$param1"경로가 구문 분석되는 방식은 관련이 없습니다. 예를 들어 로 설정된 셸 특수 문자를 삽입하면 param1됩니다 nonexistent || true; cat /the/file/I/want.

관련 정보