Як перенаправити вихід на 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.