dotfiles/.local/bin/scripts/moul

46 lines
1.3 KiB
Plaintext
Raw Normal View History

2021-10-27 08:00:54 +00:00
#!/bin/sh -e
# Mount a partition by label or device identifier automatically
# TODO make this interactive with a fuzzy finder :)
_help="$0 <device> [mountpoint] [options...]"
case $1 in
("") ds && echo "$_help" && exit 2;;
("--help") echo "$_help" && exit 0;;
("-u") shift
for last; do true; done
sudo umount --verbose "$@"
code=$?
sudo rm -df "$last"
exit $code;;
esac
arg=$1
# FSTAB: BY LABEL
if grep --word-regexp "LABEL=$arg" /etc/fstab
2022-01-31 09:36:25 +00:00
then # have to mount twice as the first one might be creating the directory
mount -L "$@" 2>/dev/null || mount -L "$@"
exit $?
2021-11-09 04:17:51 +00:00
fi
# FSTAB: BY MOUNTPOINT/NAME
if grep --word-regexp "$arg" /etc/fstab
2021-11-09 04:17:51 +00:00
then mount "$@"; exit $?
fi
# MANUALLY
mountpoint="${2:-${MNT:-${XDG_RUNTIME_DIR}/mnt}/$(basename "$arg")}"
2021-11-09 04:17:51 +00:00
if grep -e "[^\w=/]$mountpoint[^\w/]" /etc/fstab
then shift; mount "$mountpoint" "$@"; code=$?; cd $mountpoint; exit $code
fi
2021-12-02 17:15:26 +00:00
case "$arg" in
(sd*|loop*|nvme*|mm*|md*|dm*|vg*) partition="/dev/$arg";;
(/dev/*) partition="$arg";;
(*) partition="-L $arg";;
2021-11-04 11:19:43 +00:00
esac
shift $(expr 2 \& $# \> 1 \| 1)
#uid=$(id --user),gid=$(id --group), \
2021-12-16 22:04:50 +00:00
if ! mountpoint "$mountpoint" 2>/dev/null
then mp="/run/media/$USER/$arg" && test -e "$mp" && mountpoint="$mp"
2022-07-05 09:40:11 +00:00
sudo mount -vo users,X-mount.mkdir,noatime,umask=003,gid=users,uid=$USER $partition $mountpoint "$@"
2021-12-16 22:04:50 +00:00
fi
2021-10-27 08:00:54 +00:00
cd $mountpoint
exec $SHELL