Execute o comando de uma pasta específica

1

Eu tenho uma ferramenta de captura de tela que só funciona se eu a iniciar no mesmo diretório em que o arquivo está. Agora eu quero fazer um atalho para apenas pressionar print, o comando é:

bash -c '~/Documents/KneckPrint | xsel --clipboard'   

Agora, como eu disse, isso não funciona se eu não o executar na pasta KneckPrint.

Eu tentei

bash -c 'cd ~/Documents/KneckPrint | KneckPrint | xsel --clipboard'    

Mas isso não funciona, então não tenho noção.

E: o bash -c '…' parece ser necessário porque de outra forma o xsel não é executado.

    
por AnnoyedGuy 01.02.2017 / 17:38

2 respostas

2

Julie Pelletier sugeriu (nos comentários):

bash -c 'cd ~/Documents/KneckPrint && KneckPrint | xsel --clipboard'

Uma variante mais curta disso seria

( cd ~/Documents/KneckPrint && KneckPrint | xsel --clipboard )

Esta (ou a sugestão de Julie) pode ser colocada em uma função shell:

function knecksel {
  ( cd "$HOME/Documents/KneckPrint" && KneckPrint | xsel --clipboard )
}

O subshell ( (...) ) impede que o diretório permaneça alterado quando o comando xsel é concluído.

    
por 01.02.2017 / 18:53
1

Você pode criar o arquivo rc instantaneamente: bash --rcfile <(cd directory) -c 'command line'

    
por 01.02.2017 / 18:28