sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

mtpmount (2033B)


      1 #!/usr/bin/env sh
      2 
      3 # Description: Toggle mount of MTP device (eg. Android device)
      4 #              'l' to list mountable devices
      5 #              'n' integer associated to device to mount
      6 #              'q'/'Return' exit
      7 #
      8 # Dependencies: gvfs-mtp
      9 #
     10 # Notes: The MTP device should be mounted at /run/user/$UID/gvfs.
     11 #        Put /run/user/$UID/gvfs to bookmark entries (NNN_BMS) for faster access.
     12 #        Make sure the device is unlocked when mounting.
     13 #
     14 #        When doing copy-paste into MTP device, you will get an error like this:
     15 #            cp: preserving times for './gambar1.png': Operation not supported
     16 #        That just means the file is copied but timestamp won't be preserved.
     17 #        It's like doing `cp -p localfile.txt file-to-SMB.txt`.
     18 #
     19 # Shell: POSIX compliant
     20 # Author: Benawi Adha
     21 
     22 prompt="Device number ('l' to list): "
     23 
     24 IFS='
     25 '
     26 
     27 lsmtp () {
     28     devs=$(gio mount -li | grep -e 'activation_root' | sed 's/\s*activation_root=//g')
     29     c=1
     30     printf "Devices list:\n"
     31     for i in $devs; do
     32         printf "%s %s\\n" "$c" "$i"
     33         c=$(( c + 1 ))
     34     done
     35     echo
     36 }
     37 
     38 lsmtp
     39 printf "%s" "$prompt"
     40 read -r input
     41 
     42 while [ -n "$input" ]
     43 do
     44     if [ "$input" = "l" ]; then
     45         lsmtp
     46     elif [ "$input" = "q" ] || [ "$input" -eq 0 ]; then
     47         exit
     48     elif [ "$input" -le "$(printf '%s\n' "${devs}" | grep -c '^')" ]; then
     49         # dev=$(printf "%s\n" "$devs" | cut -d$'\n' -f${input})
     50         c=1
     51         for i in $devs; do
     52             dev=$i
     53             if [ "$input" -eq $c ]; then
     54                 break
     55             fi
     56             c=$(( c + 1 ))
     57         done
     58 
     59         if (gio mount -l | grep '^Mount([1-9]).*'"$dev" ) 1>/dev/null; then
     60             if gio mount -u "${dev}"; then
     61                 printf "%s unmounted\n" "$dev"
     62             fi
     63         else
     64             if gio mount "${dev}"; then
     65                 printf "%s mounted to /run/user/\$UID/gvfs\n" "$dev"
     66             fi
     67         fi
     68         echo
     69     else
     70         printf "Invalid input\n"
     71     fi
     72 
     73     printf "%s" "$prompt"
     74     read -r input
     75 done
     76