12

これは基本的な質問ですが、私はまともな解決策を見つけるのに苦労しています。これにより、スクリプトの自動化が妨げられています。

私は次の道をたどります。

/home/hassan/Dyna/ProjectSimulation

プロジェクトシミュレーションでは、3つのフォルダがあります

friction time force

お気に入り

/home/hassan/Dyna/ProjectSimulation/friction

これで、この摩擦フォルダにファイルfriction1.txtがあり、それをProjectSimulationにコピーしたいと思います。

完全なパスを回避して、1つ下のステップを実行することは可能ですか?

また、このfriction1.txtをfolder forceにコピーする必要がある場合、完全なパスを回避する方法はありますか。

つまり、サブルーチンがありますが、これはパスに依存します。実行するたびに、同じフォルダーで実行してから結果をコピーして、シミュレーションのインスタンスを1つだけ実行できるようにする必要があります。

専門家が案内してくれます。

PS:これは600行のシェルの一部です。

4

3 に答える 3

16

これは非常に基本的なことであるため、私はあなたの質問で何かを誤解したに違いありません。

親ディレクトリを参照する場合..は、それを行う方法です。したがって、friction1.txtを2つの場所にコピーする場合は、

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を参照)

つまり

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