Jak przekierować wyjście na CD?

11

Czy można przekierować wyjście polecenia cd? Na przykład szukałem katalogu za pomocą locatei uzyskałem ścieżkę do niego. Teraz, zamiast pisać cdścieżkę, mogę przekierować locatewyjście do cd?

Próbowałem tego:

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

Brak szczęścia. To chyba nie jest szczególnie przydatne, ale jestem ciekawy.

oli206
źródło

Odpowiedzi:

16

Chcesz podstawienia polecenia, a nie przekierowania:

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

Bity między $(i )są uruchamiane jako polecenie, a dane wyjściowe (pozbawione jakiejkolwiek końcowej nowej linii) są zastępowane w ogólnym poleceniu.

Można to również zrobić za pomocą „tyknięć” („„ ”):

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

Zazwyczaj preferowana jest składnia dolar-paren, ponieważ łatwiej jest sobie radzić w sytuacjach zagnieżdżonych:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Chris Johnsen
źródło