как копировать между папками и родительской папкой без полного пути - PullRequest
8 голосов
/ 29 марта 2012

Это основной вопрос, но я изо всех сил пытаюсь найти достойное решение.Это мешает моему сценарию от автоматизации.

У меня есть следующий путь.

/home/hassan/Dyna/ProjectSimulation

в симуляции проекта у меня есть 3 папки

friction time force

как

/home/hassan/Dyna/ProjectSimulation/friction

Теперь у меня есть файл friction1.txt в этой папке трения, и я хочу скопировать его в ProjectSimulation.

Возможно ли избежать полного пути и всего один шаг вниз?

Также, если мне нужно скопировать этот файл friction1.txt в папку force, есть ли способ избежать полного пути.

Я имею в виду, что у меня есть подпрограмма, но это зависит от пути, всякий раз, когда я ее запускаю, я должензапустить в той же папке, а затем скопировать мои результаты, чтобы я мог запустить только один экземпляр моего моделирования.

Эксперты, пожалуйста, помогите мне.

PS: Это часть оболочки на 600 строк.

Ответы [ 3 ]

12 голосов
/ 29 марта 2012

Это кажется настолько основополагающим, что я, должно быть, неправильно понял что-то в вашем вопросе.

Если вы хотите обратиться к родительскому каталогу, .. - это способ сделать это. Итак, если вы хотите скопировать friction1.txt в два места, просто сделайте

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

Все, что вам нужно, это убедиться, что CWD

/home/hassan/Dyna/ProjectSimulation/friction

так, чтобы ссылки указывали в нужном месте.

0 голосов
/ 29 марта 2012

Перейдите в корневой каталог вашей известной структуры каталогов. Затем выполните операции копирования с относительными путями. Затем вернитесь в каталог, откуда вы пришли.

Ваши друзья:

cd
cd -

или лучше:

pushd
popd

(см. Man bash)

1011 * Т.е. *

pushd /home/hassan/Dyna/ProjectSimulation
cp friction/friction1.txt .
cp friction/friction1.txt force
popd
0 голосов
/ 29 марта 2012

Вы можете временно изменить текущий каталог на ProjectSimulation, скопировать файл (cp friction/friction1.txt .), а затем изменить путь обратно к оригиналу (чтобы остальная часть сценария работала как прежде)

В качестве альтернативы вы можетеможно использовать dirname , чтобы получить имя родительского каталога и использовать его.

...