Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Name file:/usr/lib/mc/extfs.d/tags+
- #Плагин для midnight commander для работы с программой tags "https://github.com/liuch/tags"
- #alpha version
- #Сохранить файл как /usr/lib/mc/extfs.d/tags+
- #Добавить в mc.ext раньше объявления .info файлов. Чтоб меньше морочится, добавте в начало
- #regex/tags\.info$
- # Open=%cd %p/tags://
- #Запускать путем активации файла tags.info
- #Создавать новую базу можно путем ввода в текущей папке "tags -c" после чего можно работать с тегами.
- LANG=C
- export LANG
- if [[ ! $(which tags) ]];then exit 1;fi
- error(){
- echo "wrong tag"
- return 1
- }
- tags_list() {
- arch=$1
- taglist=$(tags -p |sed "s/^ *//g"|cut -f1)
- taglistdir=$(echo "$taglist"|sed "s|=|/|")
- user=$(whoami)
- rules="drwxrwxr-x"
- date=$(date +"%b %d %H:%M")
- for i in $taglist; do
- if [[ ! $(echo $i|cut -f2 -d=) ]]; then continue; fi
- b=$(echo "$i"|sed "s|=|/|")
- echo "$rules 1 $user $user 4 $date $b"
- files_tags=$(tags -l -w $i)
- for d in $files_tags;do
- raw=$(ls -l $d --time-style=+"%b %d %H:%M"| sed "s/ */ /g")
- sizef=$(echo "$raw"|cut -f5 -d" ")
- rulesf=$(echo "$raw"|cut -f1 -d" ")
- userf=$(echo "$raw"|cut -f3 -d" ")
- groupf=$(echo "$raw"|cut -f4 -d" ")
- datef=$(echo "$raw"|cut -f6,7,8 -d" ")
- echo "$rulesf 2 $userf $groupf $sizef $datef $b/$d"
- done
- done
- }
- copyin(){
- arch=$1
- filename=$2
- source=${@:3}
- echo $filename>/tmp/tags
- echo $source>>/tmp/tags
- echo $arch>>/tmp/tags
- if [[ $(dirname $filename) == "." ]]
- then return 1
- else
- if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
- then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
- else tag=$(dirname $filename)=
- fi
- tags -a $tag $(dirname "$arch")/$(basename $filename) >/dev/null 2>&1
- fi
- }
- copyout(){
- arch=$1
- filename=$2
- dest=$3
- cp $(dirname "$arch")/$(basename $filename) $dest >/dev/null 2>&1
- }
- file_rm() {
- archive=$1
- filename=$2
- if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
- then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
- else tag=$(dirname $filename)
- fi
- tags -d $tag $(dirname "$arch")/$(basename $filename) >/dev/null 2>&1
- }
- dir_rm() {
- arch=$1
- filename=$2
- if [[ $(expr index $(dirname $filename) "/") -gt 0 ]]
- then tag=$(echo "$(dirname $filename|sed "s|/|=|")")
- else tag=$(dirname $filename)
- fi
- tags -d $tag $(dirname "$arch")/* >/dev/null 2>&1
- }
- tags_run() {
- arch=$1
- filename=$2
- }
- mkdir() {
- arch=$1
- filename=$2
- }
- umask 077
- cmd="$1"
- shift
- case "$cmd" in
- list) tags_list "$@" ;;
- rm) file_rm "$@" ;;
- rmdir) dir_rm "$@" ;;
- mkdir) mkdir "$@" ;;
- copyin) copyin "$@" ;;
- copyout) copyout "$@" ;;
- run) tags_run "$@" ;; #не работает без правильного copyout
- *) exit 1 ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement