summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2021-04-26 01:59:39 +0200
committerRobert Günzler <r@gnzler.io>2021-04-26 02:09:50 +0200
commitafad731bc89c88f063603e2944bb73d5e9ce0587 (patch)
tree8a292bfad7b677013543c4f80f28085262cb5e44 /bin
parent2fa1b42fc9e37dc1e0baa02f8ede0a6655b72858 (diff)
add bin/rm and bash alias; help not deleting stuff on accident
Diffstat (limited to 'bin')
-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 $@