1
Ohjelmointi, palvelimet ja muu edistyneempi käyttö / gvfs/mtp-liitoksen poiminta
« : 17.02.26 - klo:12.36 »
Yleensä tietokoneeseen on kytkettynä vain yksi puhelin, mutta joskus on tarve kopioida samalla komentotiedostolla tiedostoja eri kahdesta puhelimesta, joiden hakemistorakenteissa on jokin oleellinen ero. Tätä varten komentotiedossani on funktio, jonka avulla voin poimia juuri oikean puhelimen GVFS/MTP-liitospisteen ja sen perusteella päätellä minkä hakemistorakenteen mukaan toimitaan.
Funktio on ollut minulla jo pitkään käytössä, mutta olen nyt siistinyt sen koodia sen verran, että sen voisi esitellä muillekin.
Jos haluat kirjoittaa funktion omaan tiedostoonsa testaamista varten, tiedoston alkuun kannattaa lisätä:
Varsinainen funktio:
Rivin ”1) break ;;” voi kommentoida pois, jotta näkee valikon vaikka käsillä olisi vain yksi puhelin.
Funktio on ollut minulla jo pitkään käytössä, mutta olen nyt siistinyt sen koodia sen verran, että sen voisi esitellä muillekin.
Jos haluat kirjoittaa funktion omaan tiedostoonsa testaamista varten, tiedoston alkuun kannattaa lisätä:
Koodia: [Valitse]
#!/bin/bash
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then printf '# Käyttö:
source '$(printf '%q\n' $0)'
puhjuuri=$(poimi_mtp_juuri) && cd $puhjuuri && pwd
'; exit 1; fiVarsinainen funktio:
Koodia: [Valitse]
poimi_mtp_juuri(){
local gvfspolku="/run/user/$(id -u)/gvfs"
while :
do
local liitetty=( $(ls -1 $gvfspolku/ | grep ^mtp) )
case ${#liitetty[@]} in
1) break ;;
0)
zenity --question --title 'Puhelin ei ole liitetty' \
--text 'Kytke puhelin USB-kaapelilla ensin' \
--ok-label 'Yritä uudestaan' --cancel-label 'Keskeytä' ||
return
;;
*)
liitetty=$(
zenity --list --radiolist --title 'Valitse puhelin' \
--text 'Tarkista sarjanumero' \
--ok-label 'Jatka' --cancel-label 'Keskeytä' \
--column '' --column 'Laite' --print-column 2 \
${liitetty[@]/#/false }
) || return
break
;;
esac
done
echo "$gvfspolku/$liitetty"
}Rivin ”1) break ;;” voi kommentoida pois, jotta näkee valikon vaikka käsillä olisi vain yksi puhelin.
