bin: make moul interactive
This commit is contained in:
parent
f0fc69bb90
commit
7018974b2a
|
@ -515,7 +515,11 @@ umoul() {
|
||||||
mountpoint "$mountpoint" >/dev/null && break
|
mountpoint "$mountpoint" >/dev/null && break
|
||||||
mountpoint="$(dirname "$mountpoint")"
|
mountpoint="$(dirname "$mountpoint")"
|
||||||
done
|
done
|
||||||
test "$(dirname "$mountpoint")" = "/" && return 1
|
test "$(dirname "$mountpoint")" != "/" ||
|
||||||
|
mountpoint="$(mount |
|
||||||
|
grep --invert-match -e " /[^/]*\(/[^/]*\)\? " -e "/sys" -e "/run/user" -e "/run/docker" |
|
||||||
|
fzf --select-1 --exit-0 | awk '{print $3}')" ||
|
||||||
|
return $?
|
||||||
fi
|
fi
|
||||||
case "$PWD" in
|
case "$PWD" in
|
||||||
("$mountpoint"*) builtin cd "$(dirname $mountpoint)";;
|
("$mountpoint"*) builtin cd "$(dirname $mountpoint)";;
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh
|
||||||
# Mount a partition by label or device identifier automatically
|
# Mount a partition by label or device identifier automatically
|
||||||
# TODO make this interactive with a fuzzy finder :)
|
set -eo pipefail
|
||||||
_help="$0 <device> [mountpoint] [options...]"
|
_help="$0 <device> [mountpoint] [options...]"
|
||||||
case $1 in
|
case $1 in
|
||||||
("") ds && echo "$_help" && exit 2;;
|
("") arg=$(lsblk --list --noheadings --output name,label,fstype,mountpoint |
|
||||||
|
grep -v '/' | grep ".\+ [^ ]\+" | fzf --select-1 --exit-0 |
|
||||||
|
sed "s/^\([^ ]\+ \+\)\?\([^ ]\+\) \+[^ ]\+ *$/\2/");;
|
||||||
("--help") echo "$_help" && exit 0;;
|
("--help") echo "$_help" && exit 0;;
|
||||||
("-u") shift
|
("-u") shift
|
||||||
for last; do true; done
|
for last; do true; done
|
||||||
|
@ -11,9 +13,9 @@ case $1 in
|
||||||
code=$?
|
code=$?
|
||||||
sudo rm -df "$last"
|
sudo rm -df "$last"
|
||||||
exit $code;;
|
exit $code;;
|
||||||
|
(*) arg=$1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
arg=$1
|
|
||||||
# FSTAB: BY LABEL
|
# FSTAB: BY LABEL
|
||||||
if grep --word-regexp "LABEL=$arg" /etc/fstab
|
if grep --word-regexp "LABEL=$arg" /etc/fstab
|
||||||
then # have to mount twice as the first one might be creating the directory
|
then # have to mount twice as the first one might be creating the directory
|
||||||
|
@ -28,14 +30,18 @@ fi
|
||||||
# MANUALLY
|
# MANUALLY
|
||||||
mountpoint="${2:-${MNT:-${XDG_RUNTIME_DIR}/mnt}/$(basename "$arg")}"
|
mountpoint="${2:-${MNT:-${XDG_RUNTIME_DIR}/mnt}/$(basename "$arg")}"
|
||||||
if grep -e "[^\w=/]$mountpoint[^\w/]" /etc/fstab
|
if grep -e "[^\w=/]$mountpoint[^\w/]" /etc/fstab
|
||||||
then shift; mount "$mountpoint" "$@"; code=$?; cd $mountpoint; exit $code
|
then test $# -gt 0 && shift
|
||||||
|
mount "$mountpoint" "$@"
|
||||||
|
code=$?
|
||||||
|
cd $mountpoint
|
||||||
|
exit $code
|
||||||
fi
|
fi
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
(sd*|loop*|nvme*|mm*|md*|dm*|vg*) partition="/dev/$arg";;
|
(sd*|loop*|nvme*|mm*|md*|dm*|vg*) partition="/dev/$arg";;
|
||||||
(/dev/*) partition="$arg";;
|
(/dev/*) partition="$arg";;
|
||||||
(*) partition="-L $arg";;
|
(*) partition="-L $arg";;
|
||||||
esac
|
esac
|
||||||
shift $(expr 2 \& $# \> 1 \| 1)
|
shift $(expr 2 \& $# \> 2 \| $#)
|
||||||
#uid=$(id --user),gid=$(id --group), \
|
#uid=$(id --user),gid=$(id --group), \
|
||||||
if ! mountpoint "$mountpoint" 2>/dev/null
|
if ! mountpoint "$mountpoint" 2>/dev/null
|
||||||
then mp="/run/media/$USER/$arg" && test -e "$mp" && mountpoint="$mp"
|
then mp="/run/media/$USER/$arg" && test -e "$mp" && mountpoint="$mp"
|
||||||
|
|
2
.zshenv
2
.zshenv
|
@ -128,7 +128,7 @@ alt-shift-down:preview-down,alt-shift-up:preview-up,esc:close")
|
||||||
#alt-r:preview(bat {}),
|
#alt-r:preview(bat {}),
|
||||||
export FZF_HISTDIR="$XDG_STATE_HOME/fzf"
|
export FZF_HISTDIR="$XDG_STATE_HOME/fzf"
|
||||||
mkdir -p "$XDG_STATE_HOME/fzf"
|
mkdir -p "$XDG_STATE_HOME/fzf"
|
||||||
export FZF_DEFAULT_OPTS="--select-1 --ansi
|
export FZF_DEFAULT_OPTS="--select-1 --exit-0 --ansi
|
||||||
--tiebreak=$($_fzf_latest && echo "chunk,")end,length --history=$FZF_HISTDIR/history --bind='$FZF_BINDINGS'
|
--tiebreak=$($_fzf_latest && echo "chunk,")end,length --history=$FZF_HISTDIR/history --bind='$FZF_BINDINGS'
|
||||||
$($_fzf_latest && echo '--preview-window=60%,border-left --marker=o')"
|
$($_fzf_latest && echo '--preview-window=60%,border-left --marker=o')"
|
||||||
FD_BASE="fd --hidden --color=always --no-ignore-vcs"
|
FD_BASE="fd --hidden --color=always --no-ignore-vcs"
|
||||||
|
|
|
@ -24,7 +24,8 @@ Here are some basic commands you should remember:
|
||||||
- loc :: quickly find a file on your system, case-insensitive
|
- loc :: quickly find a file on your system, case-insensitive
|
||||||
- loca :: do a deep search for a file on the whole system, case-insensitive
|
- loca :: do a deep search for a file on the whole system, case-insensitive
|
||||||
- loce :: find a file/directory with exact name match
|
- loce :: find a file/directory with exact name match
|
||||||
|
- moul :: mount a device interatively (unmount with ~umoul~)
|
||||||
|
*** Mounting Manually
|
||||||
To mount a device,
|
To mount a device,
|
||||||
first check ~ds~ ([d]isk [s]tats, a prettification of ~lsblk --fs~)
|
first check ~ds~ ([d]isk [s]tats, a prettification of ~lsblk --fs~)
|
||||||
and find your device,
|
and find your device,
|
||||||
|
|
Loading…
Reference in New Issue