相対パスなしでディレクトリの内容をルートディレクトリにコピーします。

相対パスなしでディレクトリの内容をルートディレクトリにコピーします。

私は次の構造を持っています:

root_directory/  
          foo  
          bar/
             x/
               a.txt
               b.txt  
             y
             .a_file
           scripts/
                my_script.sh  

コピーするmy_script内容は、bar/xroot_directory
使用する場合:
cp -r ../bar/x ..ディレクトリ外でスクリプトを実行すると中断されますscripts。」です。

MacとLinuxの両方で動作させるにはどうすればよいですか?

ベストアンサー1

または、相対パスを好む場合は、スクリプトパスを含む配列変数を使用してスクリプトディレクトリの絶対パスを決定できますBASH_SOURCE

scripts=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)
cp -R "$scripts"/../bar/x "$scripts"/..

GNUはorをcp使用しても構いませんが、-rBSDのマニュアルページには推奨されていないと記載されているので、次のものを使用することをお勧めします。-R-r-R

ユーティリティの履歴バージョンのオプションがcpあります-r。この実装はこのオプションをサポートしていますが、特別なファイル、シンボリックリンク、またはFIFOを正しくコピーしないため、使用しないことをお勧めします。

おすすめ記事