Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: romciiik 07 Ledna 2010, 22:26:37
-
Cieľom je aby sa užívateľovi nainštaloval program rapidshare-dl pre sťahovanie z rapidshare.com aj s odkazom do GNOME panelu..
prosím o kontrolu scriptu:
#!/bin/bash
# priecinok obsahuje:
# install.sh
# RapidShare_Logo.svg
# rapidshare-dl_0.3.6-1_all.deb
user=$USER
echo "Zadaj cestu k textovému súboru s linkami: /home/"$user"/"
read cesta
echo "Inštalujem program rapidshare-dl..."
sudo sudo dpkg -i rapidshare-dl_0.3.6-1_all.deb
echo "Vytváram textový súbor pre linky..."
echo "" >> /home/$user/$cesta
echo "Vytváram odkaz do GNOME-panela..."
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=true
Icon[sk_SK]=/usr/share/icons/scalable/apps/RapidShare_Logo.svg
Name[sk_SK]=rapidshare
Exec=rapidshare-dl '/home/"$user"/"$cesta"'
Name=rapidshare
Icon=/usr/share/icons/scalable/apps/RapidShare_Logo.svg
" >> /home/$user/.gnome2/panel2.d/default/launchers/rapidshare.desktop
echo "Kopírujem ikonu odkazu..."
cp RapidShare_Logo.svg /usr/share/icons/scalable/apps/RapidShare_Logo.svg
exit 1
celý inštalačný súbor je na http://www.romiix.org/rapidshare-pack.zip (http://www.romiix.org/rapidshare-pack.zip)
.. je to môj prvý bash-pokus takže zhovievavo a tiež prosím o zdržanie komentárov o zbytočnosti scriptu
-
imho je ten skript uplne zbytecny :D :D (ale ne, po tom co dneska-vlastne uz vcera- predvedl Roman Hornik (neber si to tak, Romane ;) ), je to vrchol ucelnosti ;D )
takze par poznamek:
1) user=$USER - naprosto zbytecne, vsude, kde jsi pouzivas "$user" jsi mohl stejne dobre pouzit "$USER" a zbytecne to nekomplikovat... nebo jsi misto '/home/"$user"' mohl rovnou pouzit ~
2) zadavat tam cestu, tak jak to tam mas neni zrovna nejlepsi napad, prumerny uzivatel tam napise klidne treba /home/petr/souborsodkazy , coz bude po doplneni tebou predvyplneneho /home/"$user"/ blbost (reseni - napr donutit uzivatele napsat celou cestu, nebo pouzit file chooser dialog v zenity)
3) proc tam mas to sudo 2x?
4) nepouzivej ">>" - uzivatel ten skript muze spustit dvakrat a zase z toho vyleze blbost
5) [sk_SK] - je tady zbytecny - neni to nijak jazykove specificky a nevim jak by to vypadalo napr v ceskem nebo anglickem systemu
6) kdyz program skonci uspesne vraci 0 a ne 1
-
1) použil som ~
2) použil som zenity
3) opravené, preklep
4) opravené
5) vyhodené
6) opravené
- doplnené overovanie prítomnosti potrebných súborov, prie inštaláciu prípadne ich stiahnutie
http://paste.lubomirr.eu/287 (http://paste.lubomirr.eu/287) install.sh so zvýraznením syntaxe
#!/bin/bash
# Create by Roman Mátyus (c) 2010
# v 0.2
#
# Inštalátor programu rapidshare-dl určeného pre sťahovanie zo servra rapidshare.com spolu
# s nastavením ikony pre rýchle spustenie do GNOME panela
# Kontrola existencie ikony, stiahnutie prípadne error
if [ ! -e RapidShare_Logo.svg ] ; then
echo "Sťahujem súbor RapidShare_Logo.svg...";
wget http://upload.wikimedia.org/wikipedia/en/3/3b/RapidShare_Logo.svg
if [ ! -e RapidShare_Logo.svg ] ; then
echo "Súbor RapidShare_Logo.svg sa nepodarilo stiahnuť!
Nie je možné pokračovať v inštalácií!"
exit 1
fi
fi
# Kontrola existencie inštalačného súboru, stiahnutie prípadne error
if [ ! -e rapidshare-dl_0.3.6-1_all.deb ] ; then
echo "Sťahujem súbor rapidshare-dl_0.3.6-1_all.deb...";
wget https://edge.launchpad.net/%7Ezootropo/+archive/+files/rapidshare-dl_0.3.6-1_all.deb
if [ ! -e rapidshare-dl_0.3.6-1_all.deb ] ; then
echo "Súbor rapidshare-dl_0.3.6-1_all.deb sa nepodarilo stiahnuť!
Nie je možné pokračovať v inštalácií!"
exit 1
fi
fi
echo "Inštalujem program rapidshare-dl..."
sudo dpkg -i rapidshare-dl_0.3.6-1_all.deb
echo "Zadaj cestu k textovému súboru s linkami..."
FILE=`zenity --file-selection --save --title="Výber súboru"`
case $? in
0)
echo "Vybraný súbor „$FILE“.";;
1)
echo "Nebol vybraný žiadny súbor.
Nie je možné pokračovať v inštalácií!"
exit 1;;
-1)
echo "Nebol vybraný žiadny súbor.
Nie je možné pokračovať v inštalácií!"
exit 1;;
esac
echo "Vytváram textový súbor pre linky..."
echo "" > $FILE
echo "Vytváram odkaz do GNOME-panela..."
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=true
Exec=rapidshare-dl '"$FILE"'
Name=rapidshare
Icon=/usr/share/icons/scalable/apps/RapidShare_Logo.svg
" > ~/.gnome2/panel2.d/default/launchers/rapidshare.desktop
echo "Kopírujem ikonu odkazu..."
cp RapidShare_Logo.svg /usr/share/icons/scalable/apps/RapidShare_Logo.svg
exit 0
Ešte sa mi nejako nepozdáva, že súbor s odkazom sa síce vytvorí ale v GNOME panely sa to neprejaví. Pravdepodobne treba aspoň relogin. Teraz nemôžem otestovať, ešte pár hodín uploadujem. Dá sa nejako zariadiť znovunačítanie ikôn, aby sa zmeny prejavili okamžite?
Ďakujem MacHalovi za konštruktívnu kritiku a prosím o ďalšiu;)
-
ad gnome-panel: vetsinou se pouziva killall gnome-panel (gnome-session by si ho hned automaticky melo spustit znova, ale obcas muze byt problem napr. s nejakymi aplety apod.)
jinak podle toho co jsem u sebe zkousel, to co pouzivas na vytvoreni ikony na panelu nestaci - koneckoncu, jak by se urcila napr. poloha te ikony, ze?
podle toho co jsem zbezne zkousel , tak by se spolecne s tim mela tvorit polozka v .gconf/apps/panel/objects ( asi pomoci gconftool-2 )
imho jdou nejak tvorit polozky v menu (na panelu mozna taky) multiplatformne a jednoduseji, takze zkus zagooglit, nebo se zkus nekoho zeptat (jestli to tady nekdo vi, tak nejspis quaker )
EDIT: jo, mel jsem pravdu, vytvorenim
/usr/share/applications/jmenoprogramu.desktop nebo ~/.local/share/applications/jmenoprogramu.desktop
k tomu zenity: nevim jestli je defaultne instalovane, bacha na to
-
zenity - prerobím to asi tak, že skúsim detekovať či je nainštalované (ešte neviem ako) a ak nie je vypýta si program cestu písanú ručne
podla toho čo som doteraz zistil, sa mení súbor
~/.gconf/apps/panel/general/%gconf.xml
pridáva sa do
~/.gconf/apps/panel
priečinok object_[cislo] so súborom %gconf.xml
killall gnome-panel
u mňa funguje, aj keď to podla mňa nie je ideálne riešenie
-
napr.
which zenity 2> /dev/null 1>&2 && echo nainstalovano
v tom gconf/... mas ocividne trochu jinou strukturu nez ja (asi jina verze gnome) , celkem by me zajimalo jak presne object_x/%gconf.xml planujes vytvaret (je potreba proparsovat xmlka ostatnich objektu atd)