metaoleg

Untitled

May 29th, 2012
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.58 KB | None | 0 0
  1. #!/bin/bash
  2. # a. Скрипту передается один параметр - имя файла, который нужно восстановить (без полного пути -только имя).
  3. # b. Скрипт по файлу trash. log должен найти все записи, содержащие в качестве имени файла переданный параметр, и выводить по одному на экран полные имена таких файлов с запросом подтверждения.
  4. # c. Если пользователь отвечает на подтверждение положительно, то предпринимается попытка восстановить файл по указанному полному пути (создать в соответствующем каталоге жесткую ссылку на файл из trash и удалить соответствующий файл из trash). Если каталога, указанного в полном пути к файлу, уже не существует, то файл восстанавливается в домашний каталог пользователя с выводом соответствующего сообщения.
  5.  
  6. home="/home/oleg"
  7. trashfolder=$home"/.trash"
  8. trashlog=$home"/.trash.log"
  9. filename=$1
  10. M_OK="Fine Reader^W."
  11. M_MLP_PINKIEPIE_SWEAR="Cross my heart and hope to fly stick a cupcake in my eye."
  12.  
  13. while read line <&3
  14. do
  15.     infile=$(echo $line | grep -Ei "\/$filename\/\/" | grep -Eio "\/.+\/\/" | sed "s/\/\///")
  16.     infilename=$(echo $infile | grep -Eio "/[^\/]+$" | tr -d "/")
  17.     outfile=$(echo $line | grep -Ei "\/$filename\/\/" | grep -Eio "\/\/.+$" | sed "s/\/\//\//")
  18.  
  19.     if [ -e "$outfile" ];
  20.     then
  21.         echo "$infilename is coming. Are you ready for this?"
  22.         read line
  23.         if [ $line == "y" ];
  24.         then
  25.             if [ -e "$infile" ];
  26.             then
  27.                 echo "$infile is already exist. Rewrite it?"
  28.                 read key
  29.                 if [ $key == "y" ];
  30.                 then
  31.                     ln $outfile $infile
  32.                 fi
  33.             else
  34.                 ln $outfile $infile
  35.                 if [ $? == "1" ];
  36.                 then
  37.                     echo "Error with copyng $infile to $outfile. Try copy to $home?"
  38.                     read key
  39.                     if [ $key == "y" ];
  40.                     then
  41.                         infile="$home/$infilename"
  42.                         echo "ln $outfile $infile"
  43.                         if [ -e "$infile" ];
  44.                         then
  45.                             echo "$infile is already exist. Rewrite it?"
  46.                             read key
  47.                             if [ $key == "y" ];
  48.                             then
  49.                                 ln $outfile $infile
  50.                             fi
  51.                         else
  52.                             ln $outfile $infile
  53.                         fi
  54.                     fi
  55.                 fi
  56.             fi
  57.         fi
  58.     fi
  59.  
  60. done 3<$trashlog
  61.  
  62. echo $M_OK
  63. exit 1
Advertisement
Add Comment
Please, Sign In to add comment