2012-03-29 14 views
6

Questa è una domanda di base, ma sto lottando per trovare una soluzione decente. Questo sta ostacolando il mio script dall'automazione.come copiare tra cartelle e cartella principale senza percorso completo

Ho il seguente percorso.

/home/hassan/Dyna/ProjectSimulation 

nella simulazione progetto che ho 3 cartelle

friction time force 

come

/home/hassan/Dyna/ProjectSimulation/friction 

Ora ho un file in questa cartella friction1.txt attrito e voglio copiarlo ProjectSimulation.

è possibile evitare il percorso completo e solo un gradino più in basso?

Anche se devo copiare questo friction1.txt per forzare la cartella, è comunque necessario evitare il percorso completo.

Voglio dire che ho una subroutine ma questo è dipendente dal percorso, ogni volta che lo eseguo, devo correre nella stessa cartella e quindi copiare i miei risultati in modo da poter eseguire solo una istanza della mia simulazione.

Esperti per favore guidami.

PS: fa parte di una shell di 600 linee.

risposta

9

Questo è così fondamentale che devo aver frainteso qualcosa nella tua domanda.

Se si desidera fare riferimento a una directory principale, .. è il modo per farlo. Quindi, se si desidera copiare friction1.txt a due posti basta fare

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

Tutto ciò che serve per prendersi cura di è fare in modo che la CWD è

/home/hassan/Dyna/ProjectSimulation/friction

in modo che i riferimenti puntano nel posto giusto

0

È possibile temprarily cambiare la directory corrente a ProjectSimulation, copiare il file (cp friction/friction1.txt .), quindi modificare il percorso di ritorno a quello originale (in modo che il resto dello script funziona come prima)

In alternativa, è possibile utilizzare dirname per ottenere il nome della directory superiore e usarlo.

0

Passare alla directory principale della struttura di directory conosciuta. Quindi esegui le operazioni di copia con percorsi relativi. Quindi torna al tuo indirizzo da dove vieni.

I tuoi amici sono:

cd 
cd - 

o meglio:

pushd 
popd 

(vedi man bash)

Vale a dire

pushd /home/hassan/Dyna/ProjectSimulation 
cp friction/friction1.txt . 
cp friction/friction1.txt force 
popd