这是一个基本问题,但我很难找到一个合适的解决方案。这阻碍了我的脚本自动化。
我有以下路径。
/home/hassan/Dyna/ProjectSimulation
在项目模拟中我有3个文件夹
friction time force
像
/home/hassan/Dyna/ProjectSimulation/friction
现在我在这个摩擦文件夹中有一个文件friction1.txt,我想把它复制到ProjectSimulation。
是否可以避免完整路径而只需一步下来?
此外,如果我必须将此friction1.txt复制到文件夹强制,那么无论如何都要避免完整路径。
我的意思是我有一个子程序,但这是路径依赖的,每当我运行它时,我必须在同一个文件夹中运行然后复制我的结果,这样我才能只运行一个模拟实例。
专家请指导我。
PS:这是600线外壳的一部分。
答案 0 :(得分:12)
这是基本的,我必须误解你的问题。
如果要引用父目录,..
就是这样做的方法。所以,如果你想将friction1.txt复制到你刚才做的两个地方
cp friction1.txt ..
cp friction1.txt ../force
您需要注意的是确保CWD
/home/hassan/Dyna/ProjectSimulation/friction
以便引用指向正确的位置。
答案 1 :(得分:0)
您可以暂时将当前目录更改为ProjectSimulation,复制文件(cp friction/friction1.txt .
),然后将路径更改回原始路径(以便脚本的其余部分像以前一样工作)
或者,您可以使用dirname获取父目录的名称并使用它。
答案 2 :(得分:0)
更改为已知目录结构的根目录。然后使用相对路径执行复制操作。然后换回你来自你的目录。
你的朋友是:
cd
cd -
或更好:
pushd
popd
(参见man bash)
即
pushd /home/hassan/Dyna/ProjectSimulation
cp friction/friction1.txt .
cp friction/friction1.txt force
popd