Commit f7fd0b2b7e4adc66752d6701c8a5659630e108e3

Authored by Georg Hopp
0 parents

Initial repository layout

Showing 1 changed file with 53 additions and 0 deletions
  1 +#!/bin/bash
  2 +
  3 +#
  4 +# hier ist das komplizierte..(mehr oder weniger)
  5 +# alle Kommandozeilenparameter werden geparsed:
  6 +# - alle mit - beginnenden kommen nach args
  7 +# - alle anderen werden zunächste überprüft ob sie mit einem / beginnen.
  8 +# * ist dem so, so werden sie direkt nach cpfiles übernommen.
  9 +# * ansonsten beschreiben sie einen relativen pfad und es wird zunächst das
  10 +# aktuelle Arbeitsverzeichnis vor diesen gehängt.
  11 +# * nach cpfiles kommen sie nur, wenn es sich bei dem Pfad nicht um das
  12 +# trash-verzeichnis des users handel ($HOME/trash).
  13 +# Würde man das nicht machen, so würden die Dateien auf sich selbst
  14 +# kopiert, was eine fehlermeldung von cp zur folge hätte.
  15 +#
  16 +while true
  17 +do
  18 + test -z "$1" && break
  19 + if eval test \"\${1%${1#?}}\" == \"-\"
  20 + then
  21 + args="$args $1"
  22 + arg="${1//[Rrd]/}"
  23 + test "$arg" != "-" && cpargs="$cpargs $arg"
  24 + fi
  25 + if eval test \"\${1%${1#?}}\" != \"-\"
  26 + then
  27 + file="$1"
  28 + eval test \"\${file%${file#?}}\" != \"/\" && file="$PWD/$file"
  29 +
  30 + rmfiles="$rmfiles \"$file\""
  31 + test -z "`echo $file | sed '/'${HOME//\//\\\\/}'\/trash/p;d'`" &&
  32 + cpfiles="$cpfiles \"$file\""
  33 + fi
  34 + shift || break
  35 +done
  36 +
  37 +#
  38 +# falls es nicht existiert oder kein directory ist trash neu machen
  39 +#
  40 +test ! -d $HOME/trash && (/usr/bin/rm -Rf $HOME/trash; mkdir $HOME/trash)
  41 +
  42 +#
  43 +# ok, das braucht ein wenig doku.
  44 +# ich kopiere Dateien nur nach trash, wenn sie:
  45 +# 1. -z: nicht mit f oder i als option gelöscht werden...also
  46 +# nicht force und nicht interactive.
  47 +# 2. -n: Überhaupt zu kopierende Dateien existieren.
  48 +#
  49 +test -z "`echo "$args" | sed '/-[a-zA-z0-9]*[fi][a-zA-Z0-9]*/p;d'`" -a \
  50 + -n "$cpfiles" && \
  51 + eval mv $cpargs $cpfiles $HOME/trash
  52 +
  53 +eval /usr/bin/rm -f $args $rmfiles
... ...
Please register or login to post a comment