69 lines
1.1 KiB
Bash
Executable File
69 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# TODO
|
|
# mount all partitions by selecting disk
|
|
# usage
|
|
# support for /mnt
|
|
|
|
printf '\e[6n'
|
|
read -sdRr ROW
|
|
ROW="${ROW#*[}"
|
|
ROW="${ROW%;*}"
|
|
ROW="$((ROW + 1))"
|
|
function clear_output() {
|
|
local row
|
|
local len="$1"
|
|
|
|
printf '\e[6n'
|
|
read -sdRr row
|
|
row="${row#*[}"
|
|
row="${row%;*}"
|
|
|
|
for _ in $(seq 0 "$((row - ROW))"); do
|
|
printf '\e[1A\e[K'
|
|
done
|
|
}
|
|
|
|
function umount_all() {
|
|
local disks
|
|
|
|
disks=($(mount | grep udisks2 | cut -f1 -d' '))
|
|
|
|
umount "${disks[@]}"
|
|
echo "unmounted ${disks[*]}"
|
|
}
|
|
|
|
if ! [ -t 1 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
while getopts a o; do
|
|
case "$o" in
|
|
a)
|
|
umount_all
|
|
exit
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
|
|
while true; do
|
|
#readarray -t LSBLK <<< "$(lsblk -n --paths | grep -v snap)"
|
|
readarray -t LSBLK <<< "$(lsblk -n --paths --list | grep part)"
|
|
|
|
COLUMNS=1
|
|
select dev in "${LSBLK[@]}"; do
|
|
name="$(cut -f1 -d' ' <<< "$dev")"
|
|
|
|
clear_output
|
|
if mount | grep -q "$name"; then
|
|
umount "$name"
|
|
else
|
|
udisksctl mount -b "$name" > /dev/null
|
|
fi
|
|
break
|
|
done || exit
|
|
done
|