diff options
| author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-07-19 11:35:58 +0200 | 
|---|---|---|
| committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-07-19 11:35:58 +0200 | 
| commit | a4011543565cb769d82b5ef3ac9bda7a5298f14c (patch) | |
| tree | e73dd79a88434cf2992e9cee57fe6201f629d79a /bin/common | |
| parent | ca93eb95d535e30207aba84982475fbd9749d933 (diff) | |
replaced amount with aumount
Diffstat (limited to 'bin/common')
| -rwxr-xr-x | bin/common/amount | 38 | ||||
| -rwxr-xr-x | bin/common/aumount | 90 | 
2 files changed, 90 insertions, 38 deletions
diff --git a/bin/common/amount b/bin/common/amount deleted file mode 100755 index 9053b62..0000000 --- a/bin/common/amount +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -tmp="$(mktemp)" - -die () -{ -	echo "$1" >&2 -} - -clear -lsblk -o name,size,type,mountpoint -die "───────────────────────────────────" -lsblk --ascii -o name,mountpoint | -	grep '^.-' | -	while read line -do -	words="$(printf "$line" | wc -w)" -	test $words -gt 1 && continue  -	i=$((${i:-0}+1)) -	printf "%s. %s\n" "$i" "$(printf "$line" | cut -f 2- -d '-')" -done | tee "$tmp" - -read -p '>' choice - -dev="$(grep "^$choice\." "$tmp" | cut -f 2- -d ' ')" -if test -n "$dev" -then -	die "mounting /dev/$dev on /media/$dev" -	test "$(id -u)" != "0" && sudo="sudo" -	mkdir -p /media/$dev -	$sudo mount /dev/$dev /media/$dev > /dev/null 2>&1 && -		die 'Mounted succesfully.' || -		die 'Failed to mount.' -	die 'Press [Enter] to continue.' -	head -n 1 > /dev/null -fi - -rm -f "$tmp" diff --git a/bin/common/aumount b/bin/common/aumount new file mode 100755 index 0000000..790106d --- /dev/null +++ b/bin/common/aumount @@ -0,0 +1,90 @@ +#!/bin/sh + +tmp="$(mktemp)" +test "$(id -u)" != "0" && sudo="sudo" + +die () +{ +	echo "$@" >&2 +} + +# Read one character +read_char () +{ +	die -n ">" +	old_stty_cfg=$(stty -g) +	stty raw +	dd ibs=1 count=${1:-1} 2> /dev/null +	stty $old_stty_cfg +	die "" +} + +# mount the device with $1 as the choice +mount () +{ +	dev="$(grep "^$1\." "$tmp" | cut -f 2- -d ' ')" +	test -z "$dev" && exit + +	die "mounting /dev/$dev on /media/$dev" +	mkdir -p /media/$dev +	$sudo mount /dev/$dev /media/$dev > /dev/null 2>&1 || +		return 1 +} + +# eject the device with $1 as the choice +eject () +{ +	printf "$1" | grep -q "[0-9]" || exit 1 +	mountpoint="$(sed -n "${1}p" "$tmp" | +		awk '{print $3}')" +	test -z "$mountpoint" && exit 1 + +	# Get device for mountpoint with df +	dev="$(df -P "$mountpoint" | +		tail -n +2 | head -n 1 | # skip headers +		awk '{print $1}')" + +	die "ejecting $dev" +	$sudo eject "$dev" && +		die "Succesfully ejected." || +		die "Failed to eject." +} + +# print lsblk, use $1 to print only devices with mountpoints or without +pr_lsblk () +{ +	clear +	lsblk -o name,size,type,mountpoint +	die "───────────────────────────────────" +	lsblk --ascii -o name,mountpoint | +		grep '^.-' | +		while read line +	do +		words="$(printf "$line" | wc -w)" +		test $words -eq ${1:-1} && continue  +		printf "%s\n" "$line" +	done | +		cut -f 2- -d "-" | +		awk '{print NR ". " $0}' | +		tee "$tmp" >&2 +} + +cleanup () +{ +	rm -f "$tmp" +} + +trap cleanup EXIT INT + +die "m(ount) e(ject) ?" +choice="$(read_char)" + +case $choice in +	"m") i=2; cmd=mount ;; +	"e") i=1; cmd=eject ;; +	*) exit 1 ;; +esac + +pr_lsblk $i +choice="$(read_char)" +$cmd $choice  | 
