Advertisement
robonx12

Text Editor Wrapper

May 26th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.18 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. #Řešení IOS-DU1 - wrapper
  4. #Autor: Dominik Dvořák, FIT VUT, xdvora1t@fit.vutbr.cz
  5. #Datum: 2015-03-29
  6.  
  7. #definice funkcí
  8. #fce m pro přepínač "-m" - otevře poslední editovaný soubor v adresáři
  9. m ()
  10. {
  11.   file=`grep "$1" $WEDI_RC | cut -d'|' -f 3 | sort | uniq -c | sort | sed -n '$p' | xargs |cut -d ' ' -f 2`
  12.   echo "$1|`date +%Y-%m-%d`|$file" >> $WEDI_RC
  13.   $EDITOR "$1/$file"
  14. }
  15.  
  16. #fce pro přepínač "-l" -vypsání celé historie editací v daném adresáři
  17. l ()
  18. {
  19.   write=`grep "$1|" $WEDI_RC | cut -d'|' -f 3 | sort | uniq`
  20.   echo "$write"
  21. }
  22.  
  23. #fce b pro přepínač "-b" - vypsaní historie editací
  24. #zadaného adresáře před a včetně zadaného data
  25. a ()
  26. {
  27.   awk -v date="$1" -F "|" '$2>=date' $WEDI_RC | grep "$2|" | cut -d'|' -f 3 | sort | uniq
  28. }
  29.  
  30. #fce a pro přepínač "-a" - vypsaní historie editací
  31. #zadaného adresáře po a včetně zadaného data
  32. b ()
  33. {
  34.         awk -v date="$1" -F "|" '$2<=date' $WEDI_RC | grep "$2|" | cut -d'|' -f 3 | sort | uniq
  35. }
  36.  
  37. #pokud není nastavená proměnná EDITOR, zkusí se VISUAL, jinak chyba
  38. if [ -z $EDITOR ]; then
  39.         if [ -z $VISUAL ]; then
  40.     echo "Není zadán editor" >&2
  41.     exit 1
  42.   else
  43.     export EDITOR=$VISUAL
  44.         fi
  45. fi
  46.  
  47. #pokud není nastavená WEDI_RC, tak chyba
  48. if [ -z $WEDI_RC ]; then
  49.   echo "Není zadaná proměnná WEDI_RC" >&2
  50.   exit 1
  51. fi
  52.  
  53. #pokud je nastaven přepínač -m
  54. if [ "$1" = "-m" ]; then
  55.   if [ $# = 1 ]; then
  56.     dir="`readlink -f .`"
  57.     m $dir
  58.     exit 0
  59.   else
  60.     realdir=`readlink -f "$2"`
  61.     if [ "$realdir" = "" ]; then
  62.       echo "Adresář neexistuje." >&2
  63.       exit 1
  64.     fi
  65.     m $realdir
  66.     exit 0
  67.    fi
  68.      
  69. #pokud je nastaven přepínač -l    
  70. elif [ "$1" = "-l" ]; then
  71.   if [ $# = 1 ]; then
  72.     dir="`readlink -f .`"  
  73.     l $dir
  74.     exit 0
  75.   else
  76.     realdir=`readlink -f "$2"`
  77.     if [ "$realdir" = "" ]; then
  78.       echo "Adresář neexistuje." >&2
  79.       exit 1
  80.     fi
  81.     l $realdir
  82.     exit 0
  83.    fi
  84.  
  85. #pokud je nastaven přepínač -b
  86. elif [ "$1" = "-b" ]; then
  87.         if [ $# = 2 ]; then
  88.     dir="`readlink -f .`"
  89.     b $2 $dir
  90.     exit 0
  91.   else
  92.     realdir=`readlink -f "$3"`
  93.     if [ "$realdir" = "" ]; then
  94.       echo "Adresář neexistuje." >&2
  95.       exit 1
  96.     fi
  97.     b $2 $realdir
  98.     exit 0
  99.   fi
  100.  
  101. #pokud je nastaven přepínač -a
  102. elif [ "$1" = "-a" ]; then
  103.   if [ $# = 2 ]; then
  104.     dir="`readlink -f .`"
  105.     a $2 $dir
  106.     exit 0
  107.   else
  108.     realdir=`readlink -f "$3"`
  109.     if [ "$realdir" = "" ]; then
  110.       echo "Adresář neexistuje." >&2
  111.       exit 1
  112.     fi
  113.     a $2 $realdir
  114.     exit 0
  115.   fi
  116.  
  117. #pokud se počet argumentů nerovná 1 tedy pouze ./wedi  
  118. elif [ $# -ne 1 ]; then
  119.   dir="`readlink -f .`"
  120.         a=`grep "$dir|" $WEDI_RC | tail -1 | cut -d '|' -f 3`
  121.   #v aktuálním adresáří nebyl ještě editován žádný soubor - chyba
  122.   if [ "$a" = "" ]; then
  123.     echo "V aktuálním adresáři ještě nebyl editován žádný soubor" >&2
  124.     exit 1
  125.   fi  
  126.         echo "$dir|`date +%Y-%m-%d`|$a" >> $WEDI_RC
  127.         $EDITOR "$dir/$a"
  128.   exit 0
  129.  
  130. #pokud se počet argumentů rovna 1 tedy pouze ./wedi adresář nebo ./wedi soubor
  131. elif [ $# = 1 ]; then
  132.   if [ -d "$1" ]; then
  133.     realdir=`readlink -f "$1"`
  134.     a=`grep "$realdir|" $WEDI_RC | tail -1| cut -d '|' -f 3`
  135.     #v aktuálním adresáří nebyl ještě editován žádný soubor - chyba
  136.     if [ "$a" = "" ]; then
  137.       echo "V adresáři ještě nebyl editován žádný soubor" >&2
  138.       exit 1
  139.   fi  
  140.         echo "$realdir|`date +%Y-%m-%d`|$a" >> $WEDI_RC
  141.         $EDITOR "$realdir/$a"
  142.   exit 0
  143.   else
  144.     realdir=`readlink -f "$1"`
  145.     if [ "$realdir" = "" ]; then
  146.       #neexistující cesta, bohužel na evě nefunguje mkdir -r - tedy raději vypsání chyby
  147.       if [ "$1" = *"/"* ]; then
  148.         echo "Zadaná cesta neexistuje." >&2
  149.         exit 1
  150.       #nový soubor    
  151.       else
  152.         actdir=`readlink -f .`
  153.         echo "$actdir|`date +%Y-%m-%d`|$1" >> $WEDI_RC
  154.         $EDITOR "$1"
  155.         exit 0
  156.       fi    
  157.     #tohle už je klasická situace
  158.     else
  159.       echo "${realdir%/*}|`date +%Y-%m-%d`|${1##*/}" >> $WEDI_RC
  160.       $EDITOR "$realdir"
  161.       exit 0
  162.     fi
  163.   fi
  164. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement