私は、特にbashを使用してスクリプトの世界を調べ始めたばかりで、フォルダー(サブフォルダーを含む)の内容を外部フラッシュドライブのバックアップ場所にコピーする簡単なスクリプトを作成しようとしています( Thunderbirdのデータをバックアップしようとしています)。私はいくつかのチュートリアルを見てきましたが、私が遭遇しているのは、スクリプト内で親ディレクトリに移動する方法の問題です。コピーしたいフォルダは、スクリプトファイルがある上のディレクトリ1にあります。ハードドライブにアクセスするには、2つの親ディレクトリを介してバックアップする必要があります...これが私が作成したものです(私はubuntu 12.04を実行しています):
#! /bin/bash
#this attepmts to copy the profile folder for Thunderbird to the backup drive
echo "...attempting to copy Thunderbird Profile to back-up drive (My Passport)"
#attempt to backup two directories to where media folder (and therefore My Passport is located)
parent=$(dirname $PWD)
grandparent=$(dirname $parent)
greatgrand=$(dirname $grandparent)
#show what directories the variables are set to
echo "...parent: $parent"
echo "...grandparent: $grandparent"
echo "...greatgrand: $greatgrand"
echo "...copying..."
#FIRST SUBSHELL
#create a subshell and cd to directory to copy && tar directory
#tar: -c = create tarball, -f = tells it what to create " - " = is the unix convention for stdout (this goes with the -f) " . " = means the whole directory. I the end this first subshell is creating a tarball and dumping it in stdout
# | = pipe
#SECOND SUBSHELL
(cd /mcp/.thunderbird/lOdhn9gd.default && tar -cf - .) | (cd $greatgrand/media/My Passport/Gmail_to_Thunderbird_Backup && tar -xpf -)
これを実行すると、次のようになります。
mcp@mcp-Satellite-A135:~/BashScriptPractice$ ./thunderProfileBU.sh
...attempting to copy Thunderbird Profile to back-up drive (My Passport)
...parent: /home/mcp
...grandparent: /home
...greatgrand: /
...copying...
./thunderProfileBU.sh: line 23: cd: //media/My: No such file or directory
./thunderProfileBU.sh: line 23: cd: /mcp/.thunderbird/lOdhn9gd.default: No such file or directory
ディレクトリ「/mcp」から始めるべきです。上記の最初のサブスクリプト(最後の行)では必要ないと思いますが、「cd /.thunderbird/lOdhn9g ...」を使用しようとすると、まだエラーが発生していました。2番目のサブスクリプトについては、何が起こっているのか正確にはわかりません。フォルダナビゲーションの構文を誤解しているだけですか?
また、これは副次的な質問ですが、この方法でスクリプトを作成することは、ソフトウェア開発者が知っておくべきことですか、それともこの種のことはシステム管理者のために予約されていますか?私はスクリプトのクラスを受講したことがないか、大学で提供されているものを知っていますが、それは面白いと思い、それがどのように非常に役立つかを見ることができます...ありがとう!