2016-07-02 14 views
2

Ich habe ein Verzeichnis, das mehrere Projekte enthält, und ich möchte einige Befehle für jedes Projekt ausführen.Wie man temporär für irgendein Skript in Fischen einstellt?

Nun, was ich tue ist:

cd /my/project/root 
set root (pwd) 
for p in * 
    cd $p 
    git reset --hard HEAD 
    git clean -dfx 
    cd $root 
end 

Es funktioniert aber nicht ganz elegant. Gibt es einen besseren Weg, um den Teil zu lassen:

git reset --hard HEAD 
git clean -dfx 

läuft in einem temporären Arbeitsverzeichnis, so brauche ich nicht die root und cd $root am Ende jeder Schleife aufzunehmen?

Antwort

6

Fisch unterhält bereits eine Geschichte der zuletzt besuchten Verzeichnisse so für Ihren einfachen Fall nur

for p in * 
    cd $p 
    do something 
    cd - 
end 

Es gibt auch die pushd und popd für komplexere Anwendungsfälle.

+0

sogar 'cd ..' würde funktionieren. –

+0

Was ist mit Pushd und Popd? –

+1

Beachten Sie, dass 'cd ..' leicht riskant ist, weil Fische Symlinks behandeln. Und ich habe Pushd/Popd erwähnt :-) –