これは基本的な質問ですが、私はまともな解決策を見つけるのに苦労しています。これは私のスクリプトの自動化を妨げています。
私は次の道を歩んでいます。
/home/hassan/Dyna/ProjectSimulation
プロジェクトシミュレーションでは、3つのフォルダーがあります
friction time force
お気に入り
/home/hassan/Dyna/ProjectSimulation/friction
これで、この摩擦フォルダーにファイルfriction1.txtがあり、それをProjectSimulationにコピーしたいと思います。
完全なパスと1つ下のステップを回避することは可能ですか?
また、このfriction1.txtをfolder forceにコピーする必要がある場合でも、完全なパスを回避する方法はありますか。
つまり、サブルーチンがありますが、これはパスに依存します。実行するたびに、同じフォルダーで実行してから結果をコピーして、シミュレーションのインスタンスを1つだけ実行できるようにする必要があります。
専門家が案内してください。
PS:これは600行のシェルの一部です。
これは非常に基本的なことであるため、私はあなたの質問で何かを誤解したに違いありません。
親ディレクトリを参照する場合は、..
はそれを行う方法です。したがって、friction1.txtを2つの場所にコピーする場合は、
cp friction1.txt ..
cp friction1.txt ../force
あなたが世話をする必要があるのは、CWDが
/home/hassan/Dyna/ProjectSimulation/friction
参照が正しい場所を指すようにします。
既知のディレクトリ構造のルートディレクトリに変更します。次に、相対パスを使用してコピー操作を実行します。次に、元のディレクトリに戻ります。
あなたの友達は:
cd
cd -
以上:
pushd
popd
(man bashを参照)
つまり.
pushd /home/hassan/Dyna/ProjectSimulation
cp friction/friction1.txt .
cp friction/friction1.txt force
popd
現在のディレクトリを一時的にProjectSimulationに変更し、ファイルをコピーすることができます(cp friction/friction1.txt .
)次に、パスを元に戻します(スクリプトの残りの部分は以前と同じように機能します)
または、 dirname を使用して親ディレクトリの名前を取得し、それを使用することもできます。