Como eu redireciono a saída para o cd?

10

É possível redirecionar a saída de um comando para cd ? Por exemplo, procurei por um diretório usando locate e obtive o caminho para ele. Agora, em vez de escrever um caminho cd , posso redirecionar a saída locate 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. Isso provavelmente não é particularmente útil, mas estou curioso.

    
por oli206 14.11.2010 / 13:00

1 resposta

16

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

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

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

Isso também pode ser feito com "retrocessos" ("'"):

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

A sintaxe paranástica é geralmente preferida porque é mais fácil lidar com situações aninhadas:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
    
por 14.11.2010 / 13:29