popd / pushd 경로 스택 제거 또는 지우기


39

pushd너무 많은 시간을 보낸 후 전체 경로 스택을 지우고 싶습니다.

popd스택의 모든 항목을 어떻게 합니까?

popd스택에 몇 개가 있는지 알 필요없이 하고 싶습니다 .

bash 매뉴얼은 이것을 다루지 않는 것 같습니다 .

왜 이것을 알아야합니까? 나는 까다 롭고 스택을 청소합니다.


1
BTW, 전체 bash 매뉴얼 은 gnu.org에 있습니다. 한 페이지 버전에서 모두 사용하면 그곳에서 물건을 찾기가 더 쉬울 수 있습니다.
jw013

아 구글이 색인을 생성하기를 바랍니다. 감사합니다 @ jw013
chrisjlee

답변:


47

dirs -c 당신이 찾고있는 것입니다.


1
수행 스택 비어 있지만 않습니다 하지 스택 바닥에서 작업 디렉토리 복원
Eliran 말카

8

위해 모두 스택을 비우 중, 스택의 바닥에서 작업 디렉토리를 복원

  • 에서 해당 디렉토리를 검색하고 해당 디렉토리로 dirs변경 한 후 스택을 지우십시오.

    cd "$(dirs -l -0)" && dirs -c

    -l옵션은 여기에 우리가하려고하면 반드시 우리가 실패하지 않을 수 있도록, 전체 경로를 나열합니다 cd으로 ~하고, -0스택 하단에서 검색하는 첫 번째 항목.

    @ jw013은 경로 확장을 피하여이 명령을보다 강력하게 만들 것을 제안했습니다.

    pushd -0 && dirs -c
  • 또는 popd오류가 발생할 때까지 ( popd디렉토리 스택이 비어있을 때의 호출 상태 ) :

    while (( $? == 0 )); do popd; done

1
첫 번째 방법은 내가 원하는 것입니다. 두 번째는 pushd몇 번 전화 한 후 중간에있는 디렉토리 중 하나를 제거한 다음 popd롤을 풀려고 할 때 실패 했기 때문에 두 번째 경우 작동하지 않습니다 . 내가 시작한 곳으로 돌아 가기 위해 중간에 벌레가 많은 물건을 뛰어 넘어야했습니다.
척 윌버

바로 @ChuckWilbur - 당신은 디렉토리 스택을 스크램블 경우 popd: 당신 저장하지 않습니다
Eliran 말카

그것은 더 나은에의 pushd -0대신 cd "$(dirs ...)".
jw013

@ jw013 어떻게 요? 그 디렉토리 스택 더 (우리가 여기 지우려고하는 ..) 때와 혼란
Eliran 말카

1
cd "$(...)"90 %, 아마도 99 %의 사용 사례에서 작동하지만 pushd -0100 %라고 자신있게 말할 수 있습니다. 쉘에서 파일 / 디렉토리 경로를 확장하는 것과 관련된 잠재적 인 문제와 단점이 너무 많아서 가장 강력한 방법은 완전히 피하는 것입니다. 이는 pushd -0매우 간결합니다. 위험을 감수하지 않으면 이상한 경우로 버그에 걸릴 가능성이 없습니다. 유닉스 파일 / 경로 이름과 관련된 두통에 대해 더 자세히 알고 싶다면 mywiki.wooledge.org/ParsingLs
jw013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.