Comment rediriger la sortie vers un CD?

11

Est-il possible de rediriger la sortie d'une commande vers cd? Par exemple, j'ai recherché un répertoire à l'aide de locateet obtenu le chemin d'accès. Maintenant, au lieu d'écrire un cdchemin, puis-je rediriger la locatesortie vers cd?

J'ai essayé ceci:

$ 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
$ 

Pas de chance. Ce n'est probablement pas particulièrement utile, mais je suis curieux.

oli206
la source

Réponses:

16

Vous voulez une substitution de commande, pas une redirection:

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

Les bits entre le $(et le )sont exécutés comme une commande et la sortie (débarrassée de toute nouvelle ligne finale) est substituée dans la commande globale.

Cela peut également être fait avec des «tiques» («»):

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

La syntaxe dollar-paren est généralement préférée car elle est plus facile à gérer dans les situations imbriquées:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Chris Johnsen
la source