A saída de jobs
se parece com isso
[1] Stopped TERM=xterm-256color vim --servername vim ~/.gitconfig
[2]- Stopped TERM=xterm-256color vim --servername vim ~/.vimrc (wd: ~)
[3]+ Stopped TERM=xterm-256color vim --servername vim i3blocks.conf (wd: ~/.config/i3/configs)
onde a parte, se presente, mostra o dir de onde o trabalho correspondente foi iniciado.(wd: path)
path
Várias vezes eu quero mover para esse diretório para um dos trabalhos.
Existe um utilitário para fazer isso?
Em
zsh
, a$jobdirs
matriz associativa mapeia os números dos trabalhos para o diretório de trabalho de onde eles foram iniciados, para que você possa fazer issocd $jobdirs[n]
nocd
diretório do trabalho n (oucd ${jobdirs[n]?}
para obter um erro em vez de levá-lo para casa se o trabalho não existir).Consulte também a matriz associativa
$jobstates
e$jobtexts
para o estado e o código de cada trabalho.Em
bash
, sua única opção será analisar a saída de trabalhos que infelizmente só podem ser feitos com heurística. Por exemplo, veja:Você pode ver que o
(wd:...)
só é impresso se o diretório do trabalho não for o diretório de trabalho atual e se a linha de comando do trabalho ou o diretório de trabalho contiver(wd: ...)
, não há como saber qual dos(wd:
s é o início do diretório de trabalho real.Também substitui seu diretório inicial por
~
.Também cuidado com o
wd:
está localizado. Por exemplo, em ucraniano:Portanto, você deve ter certeza de que
jobs
é chamado na localidade para a qual espera a abreviação do diretório de trabalho correspondente.Tudo o que você pode fazer é usar heurística e esperar o melhor:
Que falha em nosso exemplo inventado acima, mas deve funcionar na maioria dos casos normais.
Por enquanto, resolvi o problema definindo a seguinte função no meu
~/.bashrc
:para que eu possa fazer , que (intencionalmente) falha se eu passar o número de um trabalho não existente ou do trabalho em execução no diretório atual.
cd job-number