Chame um comando como se estivesse em chamado em outro diretório

3

Estou usando um programa de linha de comando cuja documentação declara:

  

"Você pode executar o XXX na entrada localizada em outro diretório, mas sua saída será   sempre ser colocado no diretório de trabalho atual ". Eu gostaria de ter a saída escrita para outro diretório embora.

Eu poderia (com cd ou pushd + popd )

  1. mude para o diretório de saída
  2. execute o comando para que a saída seja colocada
  3. depois, volte

ou

  1. execute o comando na minha localização atual
  2. move a saída para a pasta de saída

... mas ambos parecem desajeitados e propensos a erros se o script fosse editado por alguém que não estivesse ciente desse requisito. A única outra solução que posso pensar é juntar os comandos com ponto e vírgula. Existe outro jeito?

Isso está em apuros, a propósito.

    
por pufferfish 22.02.2014 / 12:19

1 resposta

5

use parênteses, então o cd ocorre em um subshell:

(cd other_dir && xxx)

Quando isso terminar, seu diretório de trabalho atual não será alterado.

cd pode falhar, então use && para executar o programa condicionalmente.

    
por glenn jackman 22.02.2014 / 12:23

Tags