Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: AimoE - 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ä:
#!/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; fi
Varsinainen funktio:
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.