마지막 값을 제거하지 않고 popd 사용


8

popd실제로 스택에서 마지막 디렉토리를 팝업하지 않고 사용 동작을 어떻게 얻을 수 있습니까? 즉,로 설정 한 마지막 디렉토리로 다시 이동 pushd하고 싶지만 스택의 맨 위에 머물고 싶기 때문에 다음 popd디렉토리는 동일한 디렉토리로 이동합니다. 다시).


"cd-"가 작동하지 않습니까? 내가 이해한다면, 순서는 "pushd d1; pushd d2; pushd d3;" 이제 d2로 돌아가겠습니다.
tpb261

cd -cd당신이 할 준비가 될 때까지 다른 곳 이없는 경우에만 작동 합니다 popd. 돌아올 준비가되기 전에 보통 몇 곳으로 튀어
오릅니다

그것은 분명하다. 그러나 어떻게 든 나는 당신의 질문의 암묵적인 "반송"부분을 놓쳤다.
tpb261

답변:


2

어때요? cd "$(dirs -l -p | sed -n '2{p;q}')"


좋아 고마워! 내가 본 적이 있다면 그것은 bash-fu입니다. 나는 그 명령을 peekd(C ++ STL과 비슷하고 기억하기 쉽도록) 별칭 으로 만들었으므로 입력 peekd하여 동작을 얻을 수 있습니다. alias peekd='cd "$(dirs -l -p | sed -n '\''2{p;q}'\'')"'
Freedom_Ben

3
@Freedom_Ben 이것은 다음과 같이 단순화 될 수 있습니다cd "$(dirs +1)"
Gilles 'SO-stop

@Gilles이 작업을 수행하려고하면 "bash : cd <my directory> : 해당 파일이나 디렉토리가 없습니다"라는 메시지가 표시됩니다. 왜 그런지 아십니까? cd가 <my directory>를 경로로 올바르게 해석하지 않습니까? 오류 메시지에서 제대로 작동하는 것 같습니다. 즉, <my directory>가 올 바르고 "cd <my directory>"를 입력하면 작동합니다.
nukeguy

1
@nukeguy <my directory>물결표로 시작 합니까 ? 위의 내 의견 -l에는 ~약어를 사용하지 않고 전체 디렉토리를 나열 하는 옵션 이 누락되었습니다 . 그것은해야한다cd "(dirs -l +1)"
질 'SO-정지 존재 악마'

@ 질 예! 바로 내가 찾던 것입니다, 감사합니다! 아마도 의견을 별도의 솔루션으로 게시해야합니다. 제 의견으로는이 스레드에서 가장 일반적이고 유용한 옵션입니다.
nukeguy

10

인수없이 푸시하면 스택의 상위 2 개 항목이 바뀌어 효과적으로 항목 사이를 앞뒤로 이동할 수 있습니다.

d1에서 시작하여 pushd d2를 실행하면 d1과 d2가 스택에 추가되고 d2로 남습니다. 인수없이 실행을 다시 푸시하면 스택에서 d1과 d2가 반대로 d1로 돌아갑니다.


6

내가 제대로 이해하면, 당신은 할 수 pushd .직후 popd소위 pop에드 디렉토리 스택의 상단에 다시 배치됩니다.


와우 그것은 매우 쉽고 우아한 솔루션입니다. 감사!
Freedom_Ben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.