Как перенаправить вывод на CD?

11

Можно ли перенаправить вывод команды в 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
$ 

Неудачно. Это, вероятно, не особенно полезно, но мне любопытно.

oli206
источник

Ответы:

16

Вы хотите замену команды, а не перенаправление:

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

Биты между $(и )запускаются как команда, а выходные данные (без какой-либо последней строки) подставляются в общую команду.

Это также можно сделать с помощью «обратных тиков» («` »):

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

Синтаксис «доллар-пара», как правило, предпочтительнее, потому что с ним легче иметь дело во вложенных ситуациях:

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Крис Джонсен
источник