Como redireciono a saída para o cd?


11

É possível redirecionar a saída de um comando para cd? Por exemplo, procurei um diretório usando locatee obtive o caminho para ele. Agora, em vez de escrever um cdcaminho, posso redirecionar a locatesaída para cd?

Eu tentei isso:

$ locate Descargas | grep Descargas$
/home/oliver/Descargas
$ locate Descargas | grep Descargas$ | cd
$ locate Descargas | grep Descargas$ > cd
$ locate Descargas | grep Descargas$ < cd
/home/oliver/Descargas
$ 

Sem sorte Provavelmente isso não é particularmente útil, mas estou curioso.

Respostas:


16

Você deseja substituição de comando, não redirecionamento:

cd "$(locate Descargas | grep -F 'Descargas$')"

Os bits entre $(e )são executados como um comando e a saída (removida de qualquer nova linha final) é substituída no comando geral.

Isso também pode ser feito com 'back ticks' ("` "):

cd "`locate Descargas | grep -F 'Descargas$'`"

Geralmente, a sintaxe paren-dólar é preferida, pois é mais fácil lidar com situações aninhadas:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.