창 관리자 키 바인딩을 통해 마지막으로 사용한 터미널과 동일한 디렉토리에서 새 터미널을 어떻게 열 수 있습니까?

창 관리자 키 바인딩을 통해 마지막으로 사용한 터미널과 동일한 디렉토리에서 새 터미널을 어떻게 열 수 있습니까?

저는 타일링 창 관리자를 사용하고 있으며 gnome-terminal여러 탭 사용에서 urxvt창 관리자가 관리하는 여러 인스턴스로 전환하고 있습니다. 제가 놓친 기능 중 하나는 새 터미널을 열고 이전 터미널의 작업 디렉터리를 기본값으로 사용하는 기능입니다.

간단히 말해서:마지막으로 사용한 $PWD를 기본값으로 하는 새 urxvt(bash)를 열 수 있는 방법이 필요합니다.

내 마음에 떠오르는 유일한 해결책은 cd다음과 같이 각 경로의 현재 경로를 저장하는 것입니다.

echo $PWD > ~/.last_dir

그리고 다음과 같이 새 터미널의 경로를 복원합니다.

cd `cat ~/.last_dir`

두 번째 명령을 얻을 수는 있지만 .bashrc디렉터리가 변경될 때마다 첫 번째 명령을 실행하는 방법을 모르겠습니다 :)

관련되거나 사용되지 않는 screen간단한 솔루션을 환영합니다.tmux

답변1

현재 이 버전의 솔루션 #1을 사용하고 있습니다.

# save path on cd
function cd {
    builtin cd $@
    pwd > ~/.last_dir
}

# restore last saved path
if [ -f ~/.last_dir ]
    then cd `cat ~/.last_dir`
fi

내 안에.zshrc

답변2

이는 실제로 매우 사소한 일입니다. urxvt기존 urxvt창에서 실행하면 새 창이 동일한 디렉터리에 있게 됩니다. 이를 위해 dup별칭을 사용했습니다. urxvt &단축키에 바인딩하려면 bash의 bind명령을 사용할 수 있습니다. 예를 들어 다음과 같이 바인딩합니다 F1.

$ bind '"\e[11~": "urxvt &\n"'

답변3

세 가지 용도 가 있습니다 .last_dir.echo $PWD > ~/.last_dir

  1. 특수 기능에서는 다음을 둘러싼 래퍼입니다 cd.

    function cd_
    {
      [[ -d "$@" ]] || return 1
      echo "$@" > ~/.last_dir
      cd "$@"
    }
    

    새 작업 디렉토리를 저장하려고 할 때마다 이를 디렉토리에 넣고 ~/.bashrccd cd_대신 사용하십시오.

  2. 당신의 $PROMPT_COMMAND(권장되지 않음):

    PROMPT_COMMAND="$PROMPT_COMMAND; pwd > ~/.last_dir"
    

    터미널 에서 직접 테스트하거나 ~/.bashrc. .last_dir포함됩니다.

  3. 맞춤형으로펄 확장 스크립트을 위한 rxvt. 저는 직접 만든 적이 없지만 온라인에서 많은 예제를 찾을 수 있습니다.

답변4

물론 이는 cd동작을 수정하는 가능한 방법이지만 더 간단한 솔루션을 보여주고 싶었습니다. 내부에남자 난교(1)나는 상호작용이 있다면~/.bash_logout존재하는 경우 종료하고 실행하십시오. 따라서 마지막 경로가 호출될 때마다 경로를 저장하는 대신 cd종료 시 경로를 저장할 수 있습니다.

내 것은 ~/.bash_logout매우 간단합니다.

echo $PWD >~/.lastdir

나는 내 어딘가에 .bashrc다음 줄을 배치했습니다 .

[ -r ~/.lastdir ] && cd $(<~/.lastdir)

관련 정보