SHARE
TWEET

tags+

a guest Jul 12th, 2013 32 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. #Name file:/usr/lib/mc/extfs.d/tags+
  3. #Плагин для midnight commander для работы с программой tags "https://github.com/liuch/tags"
  4.  
  5. #alpha version
  6.  
  7. #Сохранить файл как /usr/lib/mc/extfs.d/tags+
  8. #Добавить в mc.ext раньше объявления .info файлов. Чтоб меньше морочится, добавте в начало
  9. #regex/tags\.info$
  10. #       Open=%cd %p/tags://
  11. #Запускать путем активации файла tags.info
  12. #Создавать новую базу можно путем ввода в текущей папке "tags -c" после чего можно работать с тегами.
  13.  
  14. LANG=C
  15. export LANG
  16.  
  17. if [[ ! $(which tags) ]];then exit 1;fi
  18.  
  19. error(){
  20.         echo "wrong tag"
  21.         return 1
  22.         }
  23.  
  24. tags_list() {
  25.         arch=$1
  26.         taglist=$(tags -p |sed "s/^ *//g"|cut -f1)
  27.         taglistdir=$(echo "$taglist"|sed "s|=|/|")
  28.         user=$(whoami)
  29.         rules="drwxrwxr-x"
  30.         date=$(date +"%b %d %H:%M")
  31.         for i in $taglist; do
  32.                 if [[ ! $(echo $i|cut -f2 -d=) ]]; then continue; fi
  33.                 b=$(echo "$i"|sed "s|=|/|")
  34.                 echo "$rules 1 $user $user 4 $date $b"
  35.                 files_tags=$(tags -l -w $i)
  36.                 for d in $files_tags;do
  37.                         raw=$(ls -l $d --time-style=+"%b %d %H:%M"| sed "s/  */ /g")
  38.                         sizef=$(echo "$raw"|cut -f5 -d" ")
  39.                         rulesf=$(echo "$raw"|cut -f1 -d" ")
  40.                         userf=$(echo "$raw"|cut -f3 -d" ")
  41.                         groupf=$(echo "$raw"|cut -f4 -d" ")
  42.                         datef=$(echo "$raw"|cut -f6,7,8 -d" ")
  43.                         echo "$rulesf 2 $userf $groupf $sizef $datef $b/$d"
  44.                 done
  45.         done
  46.        
  47. }
  48.  
  49. copyin(){
  50.         arch=$1
  51.         filename=$2
  52.         source=${@:3}
  53.         echo $filename>/tmp/tags
  54.         echo $source>>/tmp/tags
  55.         echo $arch>>/tmp/tags
  56.         if [[ $(dirname $filename) == "." ]]
  57.                 then return 1
  58.                 else
  59.                         if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
  60.                                 then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
  61.                                 else tag=$(dirname $filename)=
  62.                         fi
  63.                         tags -a $tag $(dirname "$arch")/$(basename $filename) >/dev/null 2>&1
  64.         fi
  65. }
  66.  
  67. copyout(){
  68.         arch=$1
  69.         filename=$2
  70.         dest=$3
  71.         cp $(dirname "$arch")/$(basename $filename) $dest >/dev/null 2>&1
  72.        
  73. }
  74.  
  75. file_rm() {
  76.         archive=$1
  77.         filename=$2
  78.         if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
  79.                 then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
  80.                 else tag=$(dirname $filename)
  81.         fi
  82.         tags -d $tag $(dirname "$arch")/$(basename $filename) >/dev/null 2>&1
  83. }
  84.  
  85. dir_rm() {
  86.         arch=$1
  87.         filename=$2
  88.         if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
  89.                 then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
  90.                 else tag=$(dirname $filename)
  91.         fi
  92.         tags -d $tag $(dirname "$arch")/* >/dev/null 2>&1
  93. }
  94.  
  95. tags_run() {
  96.         arch=$1
  97.         filename=$2
  98.        
  99. }
  100.  
  101. mkdir() {
  102.         arch=$1
  103.         filename=$2
  104.        
  105. }
  106.  
  107.  
  108. umask 077
  109.  
  110. cmd="$1"
  111. shift
  112.  
  113. case "$cmd" in
  114.   list)    tags_list    "$@" ;;
  115.   rm)      file_rm      "$@" ;;
  116.   rmdir)   dir_rm      "$@" ;;
  117.   mkdir)   mkdir   "$@" ;;
  118.   copyin)  copyin  "$@" ;;
  119.   copyout) copyout "$@" ;;
  120.   run) tags_run "$@" ;; #не работает без правильного copyout
  121.   *) exit 1 ;;
  122. esac
  123. exit 0
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top