12

这是一个基本问题,但我正在努力寻找一个体面的解决方案。这阻碍了我的脚本自动化。

我有以下路径。

/home/hassan/Dyna/ProjectSimulation

在项目模拟中我有 3 个文件夹

friction time force

喜欢

/home/hassan/Dyna/ProjectSimulation/friction

现在我在这个摩擦文件夹中有一个文件friction1.txt,我想将它复制到ProjectSimulation。

是否有可能避免完整的路径而只退一步?

另外,如果我必须将此摩擦1.txt 复制到文件夹力,是否有避免完整路径的方法。

我的意思是我有一个子例程,但这取决于路径,每当我运行它时,我必须在同一个文件夹中运行,然后复制我的结果,这样我就只能运行一个模拟实例。

请高手指导一下。

PS:这是 600 行 shell 的一部分。

4

3 回答 3

16

这显得如此基本,以至于我一定误解了您的问题中的某些内容。

如果要引用父目录,..则可以这样做。所以,如果你想将摩擦1.txt 复制到两个地方,你只需要做

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

您需要注意的是确保 CWD 是

/home/hassan/Dyna/ProjectSimulation/friction

以便参考指向正确的位置。

于 2012-03-29T15:38:21.817 回答
0

您可以暂时将当前目录更改为 ProjectSimulation,复制文件 ( cp friction/friction1.txt .),然后将路径更改回原始路径(因此脚本的其余部分与以前一样)

或者,您可以使用dirname获取父目录的名称并使用它。

于 2012-03-29T15:31:35.917 回答
0

更改为已知目录结构的根目录。然后使用相对路径进行复制操作。然后改回您来自的目录。

你的朋友是:

cd
cd -

或更好:

pushd
popd

(见 man bash)

IE

pushd /home/hassan/Dyna/ProjectSimulation
cp friction/friction1.txt .
cp friction/friction1.txt force
popd
于 2012-03-29T15:38:04.843 回答