Showing
1 changed file
with
53 additions
and
0 deletions
rm
0 → 100755
| 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