Execute cd em duas janelas com um comando

4

Eu usei o iTerm2. Costumo dividir o painel em duas janelas. Quando eu quero mudar o diretório em um, eu quero também mude o diretório no outro automaticamente. Isso é possível? Uma solução Tmux também seria bem-vinda.

    
por Mark S. 18.02.2017 / 19:00

1 resposta

0

Eu ainda não usei o tmux, então pode haver maneiras melhores de fazer isso. Essa resposta também é bash-bash, já que é o shell que eu estou mais familiarizado. Tenho certeza de que outros shells têm conceitos semelhantes aos quais isso pode ser adaptado.

A idéia básica é ter um código na janela inicial que configure uma função que é chamada logo antes de um novo prompt de shell ser exibido; a segunda janela criaria um segundo script separado. A função do primeiro script atualiza uma variável TMUX_PWD tmux sempre que o diretório atual é alterado. A segunda função do script verifica a variável TMUX_PWD e altera o diretório se seu diretório atual for diferente.

O código da janela principal:

function prompt_command_primary {
  if [[ "$(tmux showenv TMUX_PWD | cut -d= -f2)" != "$PWD" ]]
  then
    tmux setenv TMUX_PWD "$PWD"
  fi
}

PROMPT_COMMAND='prompt_command_primary'
# initialize it
tmux setenv TMUX_PWD "$PWD"

O código da janela secundária:

function prompt_command_mirror {
  if [[ $(tmux showenv TMUX_PWD | cut -d= -f2) != "$PWD" ]]
  then
    cd -- "$(tmux showenv TMUX_PWD | cut -d= -f2)"
  fi
}

PROMPT_COMMAND='prompt_command_mirror'
# initialize ourselves
prompt_command_mirror

Essa pareceu-me a maneira mais elegante de ter o segundo diretório de mudança de janela baseado na primeira janela.

    
por 19.02.2017 / 04:40