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

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

Ответы:


16

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

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

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

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

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

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

# contrived
cd "$(grep '^dir: ' "$(locate interesting-places | head -1)" | sed 's/^[^ ]*//')"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.