Interfaccia in Bash




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"

PWD=$1
MYPATH=$2

# controllo se si e' scelto di spostarsi in VD: e basta
if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   if ((${#PWD} > 2)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      MYPATH=$PWD
   else
      MYPATH="VD:/"
   fi
fi

# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                                    && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      PWD=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
      if [ $MYPATH == "VD:" ]; then
         return
      fi
   fi
fi


# se in MYPATH c'e' il prefisso controllo se ho un path assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito 
   # dopo a questo una "/"
   # significa che sto trattando un path su disco virtuale non assoluto
   if [ "${PWD:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      # concateno a PWD i caratteri di MYPATH esclusi i primi 3 
      # caratteri (il prefisso)
      MYPATH=($PWD${MYPATH:3})
   fi
fi


# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo la ls del VFS per verificare l'esistenza della cartella
   $CLIENT ls ${MYPATH:3} &> /dev/null
   # 255 e' -1 (ossia l'exit status che indica errore) nella bash
   if [ $? != 255 ];then
      # elimino la barra finale (se esiste) dalla stringa che contiene
      # la mia working directory, per evitare problemi con le
      # concatenazioni che effettuo negli altri script
      PWD=($(echo $MYPATH | sed -e s/[/]*$//)"/")
   else
      # se la ls nel VFS non e' andata a buon fine restituisco errore
      echo "No such file or directory"
   fi
else
   # builtin mi serve per eseguire il comando cd originale di bash
   builtin cd $2
fi




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"
EXECUTE=$(which cp)

PWD=$1
MYPATH1=$2
MYPATH2=$3

# per non modificare PWD nel caso di un ".."
temp=$PWD

check_path_in_fs() {
   # segmento di codice per convertire path relativi del FS in path
   # assoluti: mi sposto dentro alla directory in cui e' contenuto 
   # il file indicato dal path relativo (dirname mi prende la parte
   # di directory del path relativo)
   pushd $(eval "dirname ${CHECKFORME}") &> /dev/null
   cd $(eval "dirname ${CHECKFORME}")
   # a questo punto pwd mi restituisce la parte di directory del 
   # path assoluto 
   DIRECTORY_PATH=$(pwd)
   # mi ricavo con basename il nome del file (basename elimina la 
   # parte di directory di un path)
   FILENAME_PATH=$(eval "basename ${CHECKFORME}")
   # ora basta concatenare la parte di directory con il nome del file
   CHECKFORME=$DIRECTORY_PATH/$FILENAME_PATH
   popd &> /dev/null
}

check_path_in_vfs() {
   # gestione dei ".."
   # controllo se ho i due punti all'inizio
   if ((${#CHECKFORME} > 3)) && [ "${CHECKFORME:0:3}" == "$PREFIX" ] \
                                 && [ ${CHECKFORME:3:2} == ".." ]; then
      # controllo se posso togliere da PWD una entry
      # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
      temp=$(echo $PWD | sed s/[a-Z:]//g)
      if (("${#temp}" >= "2")); then
         # tolgo l'ultima entry da PWD
         temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
         # quindi tolgo da CHECKFORME i primi 6 caratteri (VD:../)
         if [ $CHECKFORME == "VD:../" ]; then
            CHECKFORME=$temp
         else
            CHECKFORME=("VD:"${CHECKFORME:6})
         fi
      fi
   fi

   if ((${#CHECKFORME} > 2)) && [ $CHECKFORME == "VD:" ]; then
      CHECKFORME=$PWD
   fi

   
   # se in CHECKFORME c'e' il prefisso allora controllo se ho un 
   # path assoluto o no..
   if ((${#CHECKFORME} > 3)) && [ "${CHECKFORME:0:3}" == "$PREFIX" ]; \
                                                                  then
      # se trovo il prefisso "VD:" e non e' presente subito dopo a 
      # questo una "/" significa che sto trattando un CHECKFORME su 
      # disco virtuale non assoluto
      if [ "${temp:0:3}" == "$PREFIX" ] && \
               [ "${CHECKFORME:3:1}" != "/" ];then
         CHECKFORME=($temp${CHECKFORME:3})
      fi
   fi
   
}

# controllo se si tratta di una cp con entrambi gli argomenti 
# verso il file system reale
if ((${#MYPATH1} > 3)) && [ "${MYPATH1:0:3}" != "$PREFIX" ] && \
      ((${#MYPATH2} > 3)) && [ "${MYPATH2:0:3}" != "$PREFIX" ]; then
   # mi trovo nel filesystem reale
   # se non ho trovato il prefisso eseguo il comando di bash con tutti
   # gli args eccetto il primo
   
   temp_input=""
   for ((a=2; a < ($#+1); a++))
   do
      
      temp=("\"$"$a"\"")
      temp_input=$temp_input$temp
      temp_input=$temp_input" "
   done
   
   # valuto l'espressione con eval
   temp_eval_input="$EXECUTE "$temp_input
   eval $temp_eval_input
   return
fi


# rendo assoluti entrambi i path (se non lo sono)
# controllo se sono nel file system reale o virtuale
if ((${#temp} > 3)) && [ "${temp:0:3}" == "$PREFIX" ]; then
   # sono nel VFS quindi il path del filesystem reale deve essere
   # passato assoluto mentre quello del VFS puo' essere relativo
   if ((${#MYPATH1} > 2)) && [ "${MYPATH1:0:3}" == "$PREFIX" ] && \
         ((${#MYPATH2} > 3)) && [ "${MYPATH2:0:3}" != "$PREFIX" ]; then      
      CHECKFORME=$MYPATH1
      check_path_in_vfs      
      $CLIENT cp_vd2fs "${CHECKFORME:3}" $MYPATH2
      return
   elif ((${#MYPATH2} > 2)) && [ "${MYPATH2:0:3}" == "$PREFIX" ] && \
         ((${#MYPATH1} > 3)) && [ "${MYPATH1:0:3}" != "$PREFIX" ]; then
      CHECKFORME=$MYPATH2
      check_path_in_vfs
      
      $CLIENT cp_fs2vd $MYPATH1 "${CHECKFORME:3}"
      return
   else
      CHECKFORME=$MYPATH1
      check_path_in_vfs
      MYPATH1=$CHECKFORME
      
      CHECKFORME=$MYPATH2
      check_path_in_vfs
      MYPATH2=$CHECKFORME
            
      $CLIENT cp_vd2vd "${MYPATH1:3}" "${MYPATH2:3}"
      return
   fi
else
   # sono nel file system reale
   if ((${#MYPATH1} > 3)) && [ "${MYPATH1:0:3}" == "$PREFIX" ] && \
      ((${#MYPATH2} > 3)) && [ "${MYPATH2:0:3}" != "$PREFIX" ]; then
      CHECKFORME=$MYPATH2
      check_path_in_fs
      
      $CLIENT cp_vd2fs ${MYPATH1:3} $CHECKFORME
      return
   elif ((${#MYPATH2} > 3)) && [ "${MYPATH2:0:3}" == "$PREFIX" ] && \
      ((${#MYPATH1} > 3)) && [ "${MYPATH1:0:3}" != "$PREFIX" ]; then
      CHECKFORME=$MYPATH1
      check_path_in_fs
      $CLIENT cp_fs2vd $CHECKFORME "${MYPATH2:3}"
      return
   else
      $CLIENT cp_vd2vd "${MYPATH1:3}" "${MYPATH2:3}"
      return
   fi
fi




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"
EXECUTE=$(which rm)

PWD=$1
MYPATH=$2

# per non modificare PWD nel caso di un ".."
temp=$PWD



# se MYPATH e' uguale a zero controllo se sono in un path del VFS
if ((${#MYPATH} == 0)); then
   if ((${#PWD} > 3)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      # se sono in un path del VFS allora imposto MYPATH
      MYPATH=$PWD
   fi
fi


# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                              && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
   fi
fi


if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   $CLIENT del ${temp:3}
   return
fi



# se in MYPATH c'e' il prefisso allora controllo se ho un path 
# assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito dopo a 
   # questo una "/" significa che sto trattando un MYPATH su disco
   # virtuale non assoluto
   if [ "${temp:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      MYPATH=($temp${MYPATH:3})
   fi
fi

# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo il comando del VFS per verificare l'esistenza 
   # della cartella
   $CLIENT del "${MYPATH:3}"
else
   # se non ho trovato il prefisso eseguo il comando di bash con tutti
   # gli args eccetto il primo
   
   temp_input=""
   for ((a=2; a <= ($#+1); a++))
   do
      temp=("$"$a)
      temp_input=$temp_input$temp
      temp_input=$temp_input" "
   done
   
   # valuto l'espressione con eval
   temp_eval_input="$EXECUTE "$temp_input
   eval $temp_eval_input 
fi




#!/bin/bash
DEFAULT="\033[0;00m"
BOLD="\033[0;01m"

function exec_command {
        if eval $1; then         # lo esegue
                echo " OK "      # se l'exit status e' 0 allora stampa OK
        fi;
}

function display_message {
        echo -e "$BOLD$1$DEFAULT"  # stampa un messaggio in bold
}

display_message "Creating binary directory: $HOME/sgf-binary"
exec_command "mkdir $HOME/sgf-binary"

display_message "Copying bins and scripts"
exec_command "cp -R vd server script $HOME/sgf-binary"

display_message "Adding aliases to .bashrc"
echo "source $HOME/sgf-binary/script/set-alias.sh" >> $HOME/.bashrc

echo
display_message "Installation succeeded"
display_message "Restart the shell to use aliases in .bashrc"




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"
EXECUTE=$(which ln)

PWD=$1
MYPATH1=$2
MYPATH2=$3

# per non modificare PWD nel caso di un ".."
temp=$PWD

check_path_in_vfs() {
   # gestione dei ".."
   # controllo se ho i due punti all'inizio
   if ((${#CHECKFORME} > 3)) && [ "${CHECKFORME:0:3}" == "$PREFIX" ] \
                                 && [ ${CHECKFORME:3:2} == ".." ]; then
      # controllo se posso togliere da PWD una entry
      # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
      temp=$(echo $PWD | sed s/[a-Z:]//g)
      if (("${#temp}" >= "2")); then
         # tolgo l'ultima entry da PWD
         temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
         # quindi tolgo da CHECKFORME i primi 6 caratteri (VD:../)
         if [ $CHECKFORME == "VD:../" ]; then
            CHECKFORME=$temp
         else
            CHECKFORME=("VD:"${CHECKFORME:6})
         fi
      fi
   fi

   if ((${#CHECKFORME} > 2)) && [ $CHECKFORME == "VD:" ]; then
      CHECKFORME=$PWD
   fi

   
   # se in CHECKFORME c'e' il prefisso allora controllo se ho un path
   # assoluto o no..
   if ((${#CHECKFORME} > 3)) && [ "${CHECKFORME:0:3}" == "$PREFIX" ]; \
                                                                   then
      # se trovo il prefisso "VD:" e non e' presente subito dopo a
      # questo una "/" significa che sto trattando un CHECKFORME su
      # disco virtuale non assoluto
      if [ "${temp:0:3}" == "$PREFIX" ] && \
                   [ "${CHECKFORME:3:1}" != "/" ];then
         CHECKFORME=($temp${CHECKFORME:3})
      fi
   fi
   
}



# controllo se mi trovo nel filesystem virtuale
if ((${#MYPATH1} > 3)) && [ "${MYPATH1:0:3}" == "$PREFIX" ] \
   && ((${#MYPATH2} > 3)) && [ "${MYPATH2:0:3}" == "$PREFIX" ]; then
   # eseguo la ln nel VFS
   CHECKFORME=$MYPATH1
   check_path_in_vfs
   MYPATH1=$CHECKFORME
      
   CHECKFORME=$MYPATH2
   check_path_in_vfs
   MYPATH2=$CHECKFORME
            
   $CLIENT ln "${MYPATH1:3}" "${MYPATH2:3}"
   return
else
   # eseguo la ln nel filesystem reale
   # mi trovo nel filesystem reale
   # se non ho trovato il prefisso eseguo il comando di bash con tutti
   # gli args eccetto il primo
   temp_input=""
   for ((a=2; a <= ($#+1); a++))
   do
      temp=("$"$a)
      temp_input=$temp_input$temp
      temp_input=$temp_input" "
   done
   
   # valuto l'espressione con eval
   temp_eval_input="$EXECUTE "$temp_input
   eval $temp_eval_input
   return 
fi




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"
EXECUTE=$(which ls)

PWD=$1
MYPATH=$2

# per non modificare PWD nel caso di un ".."
temp=$PWD



# se MYPATH e' uguale a zero controllo se sono in un path del VFS
if ((${#MYPATH} == 0)); then
   if ((${#PWD} > 3)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      # se sono in un path del VFS allora devo fare ls di quello
      MYPATH=$PWD
   fi
fi


# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                              && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
   fi
fi


if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   $CLIENT ls ${temp:3}
   return
fi



# se in MYPATH c'e' il prefisso allora controllo se ho un path 
# assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito dopo a questo
   # una "/" significa che sto trattando un MYPATH su disco virtuale
   # non assoluto
   if [ "${temp:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      MYPATH=($temp${MYPATH:3})
   fi
fi

# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo la ls del VFS per verificare l'esistenza della cartella
   $CLIENT ls "${MYPATH:3}"
else
   # se non ho trovato il prefisso eseguo la ls di bash con tutti gli 
   # args eccetto il primo
   
   temp_input=""
   for ((a=2; a <= ($#+1); a++))
   do
      temp=("$"$a)
      temp_input=$temp_input$temp
      temp_input=$temp_input" "
   done
   
   # valuto l'espressione con eval
   temp_eval_input="$EXECUTE "$temp_input
   eval $temp_eval_input 
fi




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"
EXECUTE=$(which mkdir)

PWD=$1
MYPATH=$2

# per non modificare PWD nel caso di un ".."
temp=$PWD



# se MYPATH e' uguale a zero controllo se sono in un path del VFS
if ((${#MYPATH} == 0)); then
   if ((${#PWD} > 3)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      # se sono in un path del VFS allora imposto MYPATH
      MYPATH=$PWD
   fi
fi


# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                              && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
   fi
fi


if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   $CLIENT mkdir ${temp:3}
   return
fi



# se in MYPATH c'e' il prefisso allora controllo se ho un path
# assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito dopo a 
   # questo una "/" significa che sto trattando un MYPATH su disco
   # virtuale non assoluto
   if [ "${temp:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      MYPATH=($temp${MYPATH:3})
   fi
fi

# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo il comando del VFS per verificare l'esistenza della
   # cartella
   $CLIENT mkdir "${MYPATH:3}"
else
   # se non ho trovato il prefisso eseguo il comando di bash con tutti
   # gli args eccetto il primo
   
   temp_input=""
   for ((a=2; a <= ($#+1); a++))
   do
      temp=("$"$a)
      temp_input=$temp_input$temp
      temp_input=$temp_input" "
   done
   
   # valuto l'espressione con eval
   temp_eval_input="$EXECUTE "$temp_input
   eval $temp_eval_input 
fi




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"

PWD=$1
MYPATH=$2

# per non modificare PWD nel caso di un ".."
temp=$PWD


# se MYPATH e' uguale a zero controllo se sono in un path del VFS
if ((${#MYPATH} == 0)); then
   if ((${#PWD} > 3)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      # se sono in un path del VFS allora imposto MYPATH
      MYPATH=$PWD
   fi
fi


# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                              && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
   fi
fi


if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   $CLIENT purge ${temp:3}
   return
fi



# se in MYPATH c'e' il prefisso allora controllo se ho un path 
# assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito dopo a 
   # questo una "/" significa che sto trattando un MYPATH su disco
   # virtuale non assoluto
   if [ "${temp:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      MYPATH=($temp${MYPATH:3})
   fi
fi

# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo il comando
   $CLIENT purge "${MYPATH:3}"
else
  echo "Cannot purge files from the OS file system"
fi




#!/bin/bash

alias pwd='echo $PWD'
alias cd='source ~/sgf-binary/script/cd.sh $PWD'
alias ls='source ~/sgf-binary/script/ls.sh $PWD'
alias mkdir='source ~/sgf-binary/script/mkdir.sh $PWD'
alias del='source ~/sgf-binary/script/del.sh $PWD'
alias rm='source ~/sgf-binary/script/del.sh $PWD'
alias undel='source ~/sgf-binary/script/undel.sh $PWD'
alias purge='source ~/sgf-binary/script/purge.sh $PWD'
alias cp='source ~/sgf-binary/script/cp.sh $PWD'
alias ln='source ~/sgf-binary/script/ln.sh $PWD'
alias vd="~/sgf-binary/script/vd.sh"
alias test-vfs='~/sgf-binary/script/final-test.sh'




#!/bin/bash

CLIENT=~/sgf-binary/vd
PREFIX="VD:"

PWD=$1
MYPATH=$2

# per non modificare PWD nel caso di un ".."
temp=$PWD


# se MYPATH e' uguale a zero controllo se sono in un path del VFS
if ((${#MYPATH} == 0)); then
   if ((${#PWD} > 3)) && [ "${PWD:0:3}" == "$PREFIX" ]; then
      # se sono in un path del VFS allora imposto MYPATH
      MYPATH=$PWD
   fi
fi


# controllo se ho i due punti all'inizio
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ] \
                              && [ ${MYPATH:3:2} == ".." ]; then
   # controllo se posso togliere da PWD una entry
   # conto il numero di '/' in PWD, se e' > 2 allora posso toglierla!
   temp=$(echo $PWD | sed s/[a-Z:]//g)
   if (("${#temp}" >= "2")); then
      # tolgo l'ultima entry da PWD
      temp=$(echo $PWD | sed s/[a-Z]*[/]$//g)
      # quindi tolgo da MYPATH i primi 6 caratteri (VD:../)
      MYPATH=("VD:"${MYPATH:6})
   fi
fi


if ((${#MYPATH} > 2)) && [ $MYPATH == "VD:" ]; then
   $CLIENT undel ${temp:3}
   return
fi



# se in MYPATH c'e' il prefisso allora controllo se ho un path 
# assoluto o no..
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ]; then
   # se trovo il prefisso "VD:" e non e' presente subito dopo a 
   # questo una "/" significa che sto trattando un MYPATH su disco
   # virtuale non assoluto
   if [ "${temp:0:3}" == "$PREFIX" ] && [ "${MYPATH:3:1}" != "/" ];then
      MYPATH=($temp${MYPATH:3})
   fi
fi

# controllo se c'e' il prefisso "VD:" all'inizio del MYPATH
if ((${#MYPATH} > 3)) && [ "${MYPATH:0:3}" == "$PREFIX" ];then
   # richiamo il comando
   $CLIENT undel "${MYPATH:3}"
else
  echo "Cannot restore files from the OS file system"
fi




#!/bin/bash

BASHRC=$HOME/.bashrc
DEFAULT="\033[0;00m"
BOLD="\033[0;01m"

function exec_command {
        if eval $1; then         # lo esegue
                echo " OK "      # se l'exit status e' 0 allora stampa OK
        fi;
}

function display_message {
        echo -e "$BOLD$1$DEFAULT"  # stampa un messaggio in bold
}

display_message "Restoring original shell environment"
sed '/set-alias.sh/d' $BASHRC > /tmp/bashrc.temp
cp /tmp/bashrc.temp $BASHRC
rm /tmp/bashrc.temp


display_message "Removing binaries and scripts"
exec_command "rm -Rf $HOME/sgf-binary"

display_message "Remove complete!"
display_message "Restart the shell to use aliases in .bashrc"




#!/bin/bash

# questo script si occupa di lanciare/terminare il gestore

SERVER=~/sgf-binary/server
SOCKET=/tmp/vfs.sock
BIN_PATH=~/sgf-binary/
SCRIPT_PATH=~/sgf-binary/script


VD_start() {
   if PIDSERVER=$(pidof server); then
      echo "Server already running: $PIDSERVER"
      exit 1
   fi
   
	if [ -e "$SERVER" ]; then
	   echo -n "Starting VFS server:"
	   if $SERVER; then
	      echo "   [ OK ]"
	   else
	      echo " [ FAILED ]"
	   fi
	else
		echo "$SERVER not found"
		exit 1
	fi
	
}

VD_stop() {
   
   PIDOFSERVER=$(pidof server)
   if [ "$PIDOFSERVER" == "" ]; then
      echo "Server already stopped"
      exit 1
   fi
   
	echo -n "Stop VFS server:"
	
	if killall -INT server; then
	   echo "   [ OK ]"
	else
	   echo " [ FAILED ]"
	fi
	
	# rimuovo il socket
	if [ -e $SOCKET ]; then
		echo -n "Deleting socket file:"
		if rm $SOCKET; then
		   echo "   [ OK ]"
   	else
     	   echo " [ FAILED ]"
	   fi
	fi
}

case $1 in

start )
	VD_start
	;;

stop )
	VD_stop
	;;

* )
	echo "usage: vd {start|stop}"
	exit 1
	;;

esac






Lorenzo Baloci, Daniele Turato, Alessio Zennaro - Settembre 2006