2012-03-29 4 views
6

これは基本的な質問ですが、まともな解決策を見つけるのに苦労しています。これは私のスクリプトが自動化されるのを妨げています。完全なパスなしでフォルダと親フォルダ間をコピーする方法

私は以下のパスを持っています。プロジェクトのシミュレーションで

/home/hassan/Dyna/ProjectSimulation 

私は

/home/hassan/Dyna/ProjectSimulation/friction 

のような3つのフォルダ

friction time force 

は、今私は、この摩擦フォルダ内のファイルfriction1.txtを持っていると私はProjectSimulationにコピーします。

完全なパスと1ステップダウンを避けることは可能ですか?

また、このfriction1.txtをフォルダーフォースにコピーする必要がある場合、完全なパスを避けるために、そこにはありますか。

私はサブルーチンを持っていますが、これはパスに依存します。実行するたびに同じフォルダで実行し、結果をコピーしてシミュレーションのインスタンスを1つしか実行できません。

エキスパートは私を案内してください。

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

答えて

9

これは、私があなたの質問に何か誤解していたはずです。

親ディレクトリを参照する場合は、..がその方法です。あなたはちょうど

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

を行う二つの場所にfriction1.txtコピーしたい場合は参照が指すようそれで、あなたはの世話をする必要があるのはCWDが

/home/hassan/Dyna/ProjectSimulation/friction

であることを確認しています適切な場所で

0

あなたはtemprarily、(cp friction/friction1.txt .)にファイルをコピーし、ProjectSimulationにカレントディレクトリを変更、その後(そのスクリプトの残りの部分は前と同じように動作します)

また元に戻ってパスを変更することができ、あなたはdirnameを使用することができます親ディレクトリの名前を取得し、それを使用します。

0

既知のディレクトリ構造のルートディレクトリに変更します。次に、相対パスでコピー操作を行います。その後、あなたが来たあなたのdirに戻ります。

あなたの友人は、次のとおりです。

cd 
cd - 

以上:

pushd 
popd 

(男性はbashを参照してください)

すなわち、

pushd /home/hassan/Dyna/ProjectSimulation 
cp friction/friction1.txt . 
cp friction/friction1.txt force 
popd 
関連する問題