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