2012-03-29 15 views
6

Jest to podstawowe pytanie, ale ja staram się znaleźć przyzwoite rozwiązanie. To hamuje mój skrypt od automatyzacji.jak kopiować między folderami i folderem nadrzędnym bez pełnej ścieżki

Mam następującą ścieżkę.

/home/hassan/Dyna/ProjectSimulation 

w symulacji projektu mam 3 foldery

friction time force 

jak

/home/hassan/Dyna/ProjectSimulation/friction 

Teraz mam friction1.txt plików w tym folderze tarcia i chcę, aby skopiować go do ProjectSimulation.

Czy można uniknąć pełnej ścieżki i tylko o jeden krok w dół?

Również, jeśli muszę skopiować tę siłę tarcia1.txt do folderu, czy mimo to należy unikać pełnej ścieżki.

Mam na myśli podprogram, ale jest to zależne od ścieżki, kiedy uruchomię go, muszę uruchomić ten sam folder, a następnie skopiować wyniki, aby uruchomić tylko jedno wystąpienie z mojej symulacji.

Eksperci proszę mnie poprowadzić.

PS: To jest część powłoki 600 linii.

Odpowiedz

9

Jest to tak podstawowe, że musiałem źle zrozumieć coś w twoim pytaniu.

Jeśli chcesz odwołać się do katalogu nadrzędnego, można to zrobić pod ... Tak więc, jeśli chcesz skopiować friction1.txt do dwóch miejsc po prostu zrobić

cp friction1.txt .. 
cp friction1.txt ../force 

Wszystko trzeba zadbać o to upewnienie się, że CWD jest

/home/hassan/Dyna/ProjectSimulation/friction

tak, że punkt odniesienia w odpowiednim miejscu.

0

Można temprarily zmienić bieżący katalog na ProjectSimulation, skopiować plik (cp friction/friction1.txt .), a następnie zmienić ścieżkę z powrotem do oryginału (tak reszta skryptu działa jak poprzednio)

Alternatywnie, można użyć dirname aby uzyskać nazwę katalogu nadrzędnego i użyć tego.

0

Przejdź do katalogu głównego swojej znanej struktury katalogów. Następnie wykonaj operacje kopiowania ze względnymi ścieżkami. Potem wróć do reżimu, skąd przybyłeś.

Twoi przyjaciele są:

cd 
cd - 

lub lepiej:

pushd 
popd 

(patrz man bash)

Tj

pushd /home/hassan/Dyna/ProjectSimulation 
cp friction/friction1.txt . 
cp friction/friction1.txt force 
popd 
Powiązane problemy