Frage

Hier ist ein Rätsel: kann jemand erklären, warum cd schlägt fehl, wenn der Ausgang an ein Rohr umgeleitet

Z. B:.

james@machine:~$ cd /tmp                          # fine, no problem
james@machine:~$ cd /tmp | grep 'foo'             # doesn't work
james@machine:~$ cd /tmp | tee -a output.log      # doesn't work
james@machine:~$ cd /tmp >out.log                 # does work

Bestätigt auf OSX, Ubuntu und RHEL.

Irgendwelche Ideen?

Bearbeiten : Scheinen seltsam, dass ich die Ausgabe von cd bin kochend? Der Grund dafür ist, dass es aus einer Funktion beliebige Shell-Befehle mit Log-Einträgen Einwickeln und den Umgang mit Ausgabe.

War es hilfreich?

Lösung

Wenn Sie die Ausgabe umleiten, laicht es ein Kind Shell-Prozess, ändert sich das Verzeichnis, in dem untergeordneten Prozess, und wird beendet. Wenn Sie nicht über die Ausgabe umleiten, macht es keinen neuen Prozess erzeugen, weil es ein eingebauter in Shell-Befehl ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top