출력을 cd로 어떻게 리디렉션합니까? 사용하여 디렉토리를

명령의 출력을로 리디렉션 할 수 cd있습니까? 예를 들어, 사용하여 디렉토리를 검색 locate하고 경로를 얻었습니다. 이제 cd경로 를 작성하는 대신 locate출력을 cd?

나는 이것을 시도했다 :

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

불운. 이것은 특히 유용하지는 않지만 궁금합니다.



답변

리디렉션이 아닌 명령 대체를 원합니다.

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

$(와 사이의 비트 )는 명령으로 실행되고 출력 (최종 줄 바꿈이 잘림)은 전체 명령으로 대체됩니다.

이것은 ‘back ticks'(“`”)로도 가능합니다 :

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

달러가 많은 구문은 일반적으로 중첩 된 상황에서 처리하기 쉽기 때문에 선호됩니다.

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


답변