다음 명령을 실행하면 symlinked-dir
다른 디렉토리에 대한 심볼릭 링크가 cat
해당 파일이 없다고 불평합니다. 실제로 그러한 파일은 존재하지 않습니다.진짜대신 경로,하지만여기에는 출력을 통한 심볼릭 링크의 경로가 포함되어 있으므로 pwd
최소한 링크 측면에서 해당 링크의 위치를 cd
알 수 있습니다 . pwd
리디렉션도 이 사실을 알고 있기를 바랍니다.
cd symlinked-dir && echo $(pwd) >> ../tmp && cd .. && cat tmp
그렇다면 위 명령이 작동하려면 어떻게 수정해야 합니까?
편집: Debian 또는 Gentoo의 쉘은 Bash입니다(둘 다 동일한 방식으로 작동합니다).
답변1
오직:
(cd symlinked-dir && pwd) >> tmp && cat tmp
우리는 서브셸에서 실행 중이므로 cd
해당 서브셸에만 영향을 미치고 서브셸 외부에서 리디렉션을 수행합니다(서브셸이 생성되기 전이라도).
.txt 파일에 대한 표준(symlink 없음) 절대 경로를 원하는 경우 pwd
. 그러나 명령이 있으면 간단히 사용하여 수행할 수 있습니다.pwd -P
symlinked-dir
realpath
realpath symlinked-dir > tmp
답변2
지적했듯이 ..
디렉토리를 읽는 것은 도움이 되지 않으므로 기호 경로 수준에서 이 문제를 해결해야 합니다. 이러한 방법 중 하나가 아래에 나열되어 있습니다.
cd symlinked-dir && echo $(pwd) >> $(realpath -s $(pwd)/../tmp) && cd .. && cat tmp