summary refs log tree commit diff
path: root/bin/rm
diff options
context:
space:
mode:
Diffstat (limited to 'bin/rm')
-rwxr-xr-xbin/rm38
1 files changed, 38 insertions, 0 deletions
diff --git a/bin/rm b/bin/rm
new file mode 100755
index 0000000..f3a604c
--- /dev/null
+++ b/bin/rm
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+if [ ! -t 1 ]; then
+	# shellcheck disable=SC2068
+	exec /bin/rm $@
+fi
+
+# stop me from being stupid
+
+OPTIND=0
+for o in "$@"; do
+	OPTIND+=1
+	if [ -d "$o" ] || [ -f "$o" ]; then
+		break
+	fi
+	[ "$o" = "-r" ] && recurse=1
+	[ "$o" = "-f" ] && force=1
+	[ "$o" = "-rf" ] && force=1 && recurse=1
+done
+
+if [ -n "${force}" ] && [ -n "${recurse}" ]; then
+	tput setaf 1
+	ls -l "${!OPTIND}" >&2
+	echo "!"
+	echo "! recursive force not allowed" >&2
+	echo "!"
+	tput sgr0
+	exit 1
+fi
+
+if [ -n "${recurse}" ]; then
+	tput setaf 1
+	ls -l "${!OPTIND}" >&2
+	tput sgr0
+fi
+
+# shellcheck disable=SC2068
+exec /bin/rm -I --one-file-system $@