Wie leite ich die Ausgabe auf CD um?

11

Ist es möglich, die Ausgabe eines Befehls an umzuleiten cd? Zum Beispiel habe ich mit nach einem Verzeichnis gesucht locateund den Pfad dazu erhalten. cdKann ich jetzt die locateAusgabe umleiten , anstatt einen Pfad zu schreiben cd?

Ich habe es versucht:

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

Kein Glück. Das ist wahrscheinlich nicht besonders nützlich, aber ich bin neugierig.

oli206
quelle

Antworten:

16

Sie möchten eine Befehlsersetzung, keine Umleitung:

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

Die Bits zwischen $(und )werden als Befehl ausgeführt, und die Ausgabe (ohne jegliche letzte neue Zeile) wird in den Gesamtbefehl eingesetzt.

Dies kann auch mit 'Back Ticks' ("` ") erfolgen:

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

Die Dollar-Paren-Syntax wird im Allgemeinen bevorzugt, da sie in verschachtelten Situationen einfacher zu handhaben ist:

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