Làm cách nào để chuyển hướng đầu ra sang cd?


11

Có thể chuyển hướng đầu ra của một lệnh cd? Ví dụ, tôi đã tìm kiếm một thư mục bằng cách sử dụng locatevà có đường dẫn đến nó. Bây giờ, thay vì viết một cdđường dẫn, tôi có thể chuyển hướng locateđầu ra sang cdkhông?

Tôi đã thử điều này:

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

Không may mắn. Điều này có lẽ không đặc biệt hữu ích, nhưng tôi tò mò.

Câu trả lời:


16

Bạn muốn thay thế lệnh, không phải chuyển hướng:

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

Các bit giữa $()được chạy như một lệnh và đầu ra (tước bất kỳ dòng mới nào cuối cùng) được thay thế vào lệnh tổng thể.

Điều này cũng có thể được thực hiện với tick back tick '((`` `):

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

Cú pháp đồng đô la thường được ưa thích vì dễ xử lý hơn trong các tình huống lồng nhau:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.