cd
방금 삭제된 디렉터리(아직 존재하는 상위 폴더의 한 수준 위)를 종료할 수 있는 방법이 있습니까 ?
폴더에 대한 콘솔을 연 다음 임시 테스트 데이터가 포함된 폴더를 삭제하고 다른 폴더를 만드는 상황이 자주 발생합니다.
그러나 삭제된 폴더를 유지하려고 하면 둘 다 cd ..
상위 cd $(pwd)/..
디렉토리가 아닌 휴지통에 들어가게 됩니다.
따라서 현재 상황은 다음과 같습니다.
$ mkdir -p /home/me/test/p1
$ cd /home/me/test/p1
이제 p1 폴더를 삭제하겠습니다.
$ cd ..
me:~/.local/share/Trash/files$ ...
나는 이제 /home/me/test/
쓰레기통에 들어가는 대신 들어갈 방법을 찾고 있습니다. 그런 명령이 있나요?
답변1
PWD 변수는 현재 경로 정의를 보유합니다.
업그레이드
cd $(dirname $PWD)
으로 확장될 예정입니다.
cd $(dirname /home/me/foo/bar/baz/deleteddirectory)
누가 연장해?
cd /home/me/foo/bar/baz/
이는 한 수준의 디렉터리만 삭제한다고 가정합니다.
답변2
쉘은 현재 작업 디렉토리에 대한 경로를 변수에 저장합니다 PWD
. 달리 구성하지 않는 한, 디렉토리가 이동되거나 기호 링크가 포함된 경우에도 이는 쉘에 대해 지정된 경로입니다. 따라서 디렉터리의 실제 위치가 다른 경우에도 이를 사용하여 디렉터리의 명백한 상위 디렉터리를 변경할 수 있습니다. 예를 들어, 기호 링크의 경우에도 이는 (셸이 기호 링크를 확인하도록 함)로 cd /foo/bar
설정되고 PWD
이후에 디렉토리가 이동되거나 삭제되더라도 설정된 상태로 유지됩니다./foo/bar
bar
cd -P
PWD
PWD
따라서 마지막 슬래시 뒤의 부분을 가져와서 제거하여 확실한 상위 디렉토리로 변경할 수 있습니다.
cd ${PWD%/*}
디렉터리 경로에 공백이나 와일드카드가 있는 경우 따옴표가 필요합니다.
cd "${PWD%/*}"
zsh에서는 다음과 같이 축약할 수 있습니다.
cd $PWD:h
더 길지만 기억하기 더 쉬운 단어를 사용할 수도 있습니다.
cd "$(dirname "$PWD")"
(디렉터리 이름에 공백이나 와일드카드가 없으면 큰따옴표가 필요하지 않습니다.)