터미널/셸에서 가장 가까운 장소를 얻는 방법은 무엇입니까?

터미널/셸에서 가장 가까운 장소를 얻는 방법은 무엇입니까?

터미널(osx)에서 탐색된 최근 "위치"(디렉토리) 목록을 얻을 수 있는 방법이 있습니까? 내 말은, 터미널을 열고 몇 가지 명령을 입력하고 내가 최근에 가본 두세 곳의 장소를 찾아서 그 곳으로 가고 싶다는 뜻입니다.

최근 명령에 대한 화살표와 같습니다.

가능합니까?

답변1

쉘이 zsh(최신 버전의 macos에서는 기본값인 것으로 알고 있습니다), 모든 위치를 기억하게 하는 옵션 autopushd( set -o autopushd쉘에서 )을 설정할 수 있습니다(현재 작업 디렉토리, // 변경).~/.zshrczshcdpushdpopd

그러면 스택을 볼 수 있습니다.

dirs

또는 스택에 있는 각 디렉터리의 인덱스를 살펴보세요. 이 인덱스는 5번째 항목에 사용할 수 있습니다(전달된 맨 위 줄은 출력 dirs -v의 현재 디렉터리입니다).cd +5ls -ld ~+5dirs

또는:

print -rC1 $dirstack

( $dirstack현재 작업 디렉터리 없이 배열의 스택을 노출합니다.)

또는 지침이 활성화된 고급 완성 기능이 있고( 참조 compinstall) 완성 목록이 다음 위치에 있는 경우:

cd +<Tab>

또는

cd -<Tab>

~-또는 또는 이후의 명령 에 대해서는 다음 을 수행하십시오 ~+.

any cmd ~+<Tab>

예를 들어,

set -o autopushd
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' menu select=2
autoload -Uz compinit
compinit -i

에서 ~/.zshrc몇 개의 디렉토리를 방문한 후 Tab두 번 누르면 다음과 같은 메뉴가 나타납니다.

% cd +1
Completing directory stack
[1 -- ~/Videos]
 2 -- ~/Downloads
 3 -- ~/
 4 -- /usr
 5 -- /tmp

화살표 키를 사용하여 탐색할 수 있습니다.

디렉토리 스택 기능 자체는 zsh에만 국한되지 않습니다. 그것과 pushd// 그것을 작동하는 명령은 1980년에 도입되었고 popd나중에 복사되었습니다(1989년에 1.02) 및 (1990년에 1.0). , 또한 (1991년 2.0의 zsh에 추가됨)에서. /(1989)에서, 나중에 (1991)에 의해 복사되고, (1996)에서, 나중에 (1997)에 의해 복사되었습니다. Only(Silent와 같이 이 스택과 함께 사용할 수도 있음)는 구체적이며 완성 프레임워크는 시대를 훨씬 앞서 있으며 현재입니다(그러나 따라잡고 있습니다).dirscshbashzshcd +5cd -5csh~+~-bashzsh~+5zshbashautopushdcdpushdzshbashtcshfish

관련 정보