~/vim.txt
내가 그것을 열고 백그라운드로 푸시한 다음 cd
다른 경로로 푸시한다고 가정해 보겠습니다 . 이 작업을 포그라운드로 가져올 때 이전 경로로 다시 전환할 수 있는 옵션이 있습니까? 라고 적혀 있는 걸 보고 pwd
그게 가능하다고 생각했어요.
답변1
이는 zsh에서 가능합니다. 실제로 zsh에서 제공하는 작업 매개변수에 직접 액세스할 수 있기 때문에 쉽습니다.zsh/매개변수 모듈. 작업 번호나 작업 사양( , 등)을 배열의 아래 첨자로 사용할 %+
수 %-
있습니다 %foo
.
zmodload zsh/parameter
fgcd () {
local dir=$jobdirs[${1:-%+}]
# If the jobspec matched, then call cd. Otherwise it's probably a bad
# job spec, but call fg anyway to get the usual error message.
if [[ -n $dir ]]; then cd $dir; fi
fg $1
}
Bash도 이 정보를 추적하지만 노출되지는 않을 것 같습니다. 일부 시스템에서는 작업 프로세스의 현재 작업 디렉터리를 가져와 해당 디렉터리로 전환할 수 있습니다. 예를 들어 Linux에서는 /proc/$pid/cwd
프로세스의 작업 디렉터리에 대한 심볼릭 링크입니다.
fgcd () { # Linux only
local pid=$(jobs -p $1)
if [[ -n $pid ]]; then cd /proc/$pid/cwd; fi
fg $1
}
유용하기 때문에 여기에 zsh 버전이 있습니다. 작업의 원래 디렉터리로 전환하는 위의 함수와 달리 이 함수는 작업 프로세스 리더의 현재 작업 디렉터리로 전환합니다.
fgcd () { # Linux only
local pid=${${${jobstates[${1:-%+}]}#*:*:}%\=*}
if [[ -n $pid ]]; then cd /proc/$pid/cwd; fi
fg $1
}