0

2 つのディレクトリを同期する Ubuntu で Unix 用の bash スクリプトを作成しています。

私はすでに同期プログラムをコーディングしましたが、私が直面している問題は、コマンドラインでスクリプトを呼び出す必要があることです: " mySync -r leftdir rightdir " または " mySync -i leftdir rightdir " と私はそれを動作させないようです.

-r (再帰的) は、すべての重複フォルダーを上書きします。

-i ユーザーが同意した場合にのみ、重複したフォルダーを上書きします

問題は、コマンドでスクリプトを実行可能にする方法です。

また、「-i」コマンドが選択された場合、スクリプトが上書きされる前に、ユーザーの承認を待機させるにはどうすればよいですか?

助けてくれてありがとう。

コードは次のとおりです。

    #!/bin/bash

    echo "hello,the directory must be on the Desktop. "
    read -p "Please enter your username: " x3

    read -p "First directory name: " x1
    read -p "Second directory name: " x2

    dir1="/home/$x3/Desktop/$x1/"
    dir2="/home/$x3/Desktop/$x2/"

    if [ -d $dir2 ]; then
    cd "$dir1"

    find . -print0 | while read -d $'\0' file; do
    [ -e "$dir2/$file" ] || echo "$file"
    done

    cp -rupv $dir2* $dir1

    else
    echo Path Not found.. Check network status
    fi


    if [ -d $dir1 ]; then
    cd "$dir2"
    find . -print0 | while read -d $'\0' file; do
    [ -e "$dir1/$file" ] || echo "$file"
    done

    cp -rupv $dir1* $dir2

    else
    echo Path Not found.. Check network status

    fi
4

2 に答える 2

1

まず第一に、どうしてrsyncを使わないのですか?

本当にこれを自分でやりたい場合は、getoptorgetoptsを使用してオプションの解析を行うことをお勧めします。次に、これらのオプションに基づいて実行を制御できます...

スクリプトを実行可能にするには、chmod を使用します。

$ chmod +x mySync

于 2013-03-10T19:01:41.963 に答える
0

少し説明してもらえますか??

スクリプトをコマンドで実行できるようにしたい場合は、このように C ラッパーを作成します。

/usr/ ディレクトリ (XXX と仮定) にフォルダーを作成し、そこに sh ファイルをコピーします。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv){
  char string[512];
  strcpy(string, "");
  if(argc>=2){      //if argument exists
    for(int i=1; i<argc; i++){
        strcpy(string, strcat(strcat(string, argv[i]), " ") );
    }

            char cmd[512];
            system("cd /usr/XXX")
            strcpy(cmd, strcat("PROGRAM_NAME.sh ", string)); //note the SPACE
            system(cmd);
  }

  else{
    system("cd /usr/XXX")
    system("PRGRAM_NAME.sh");
  }
}

非常に大まかにコーディングされ(-std = c99でコンパイル)、shファイルとコンパイル済みファイルの両方を/ usr/XXXディレクトリに配置し、.bashrcファイルを開き、最後に配置します

export PATH="/usr/XXX:$PATH"

次に、コマンドを入力します..

そして、コマンドが機能しない場合は、それを修正してください... 他の誰かが完全に答えた場合、喜びは失われます (基本的に、私は今ファイルを調べるのに十分な勇気がありません) EDIT
入力して .bashrc ファイルを入手する必要がありますソース .bashrc

于 2013-03-10T19:00:28.907 に答える