Nowe posty

Autor Wątek: uruchomienie skryptu w KDE  (Przeczytany 15137 razy)

Bees

  • Gość
uruchomienie skryptu w KDE
« dnia: 2007-05-18, 22:53:13 »
Takie pytanie przyszlo mi do glowy ...
Czy da sie uruchomic skrypt basha prze podwojne klikniecie?
Np przez skojarzenie okreslonego (np .sh ) rozszerzenia  z .... /bin/sh ?
W konsoli sie da wywolac sh np.sh.
Wstepnie tak zrobilem ale nie zadzialalo.

xis

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #1 dnia: 2007-05-19, 11:38:40 »
2007-05-18 22:53:13 Bees napisał:

> Takie pytanie przyszlo mi do glowy ...
 > Czy da sie uruchomic skrypt basha prze podwojne klikniecie?
 > Np przez skojarzenie okreslonego (np .sh ) rozszerzenia  z .... /bin/sh ?
 > W konsoli sie da wywolac sh np.sh.
 > Wstepnie tak zrobilem ale nie zadzialalo.

Pewnie zadziałało, ale nie widziałeś wyników - musisz wykonać program w jakimś emulatorze terminala (np. xterm, albo konsole) żeby je zobaczyć.

Spróbuj xterm z opcja -e np.

xterm -e 'ls; sleep 10'

Itd. :)

Bees

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #2 dnia: 2007-05-19, 23:35:37 »
2007-05-19 11:38:40 xis napisał:

> 2007-05-18 22:53:13 Bees napisał:
 >
 > > Takie pytanie przyszlo mi do glowy ...
 >  > Czy da sie uruchomic skrypt basha prze podwojne klikniecie?
 >  > Np przez skojarzenie okreslonego (np .sh ) rozszerzenia  z .... /bin/sh ?
 >  > W konsoli sie da wywolac sh np.sh.
 >  > Wstepnie tak zrobilem ale nie zadzialalo.
 >
 > Pewnie zadziałało, ale nie widziałeś wyników - musisz wykonać program w jakimś emulatorze
 > terminala (np. xterm, albo konsole) żeby je zobaczyć.

Gdyby zadzialalo to nie zawracal bym nikomu glowy . Poza tym powstal by nowy plik w katalogu.

 >
 > Spróbuj xterm z opcja -e np.
 >
 > xterm -e 'ls; sleep 10'
Mozna troche jasniej ?   Po co ten ls?

Skojarzylem z sh i uruchomilem w  konsoli ale nie jest jeszcze dobrze , gubi sie ten kod ; nie moze zlokalizowac drugiego pliku, do ktorego jest odwolanie ... dedrengolada

xis

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #3 dnia: 2007-05-20, 09:25:47 »
Bo pewnie odwołujesz się za pomocą ścieżki względnej. Pamiętaj, że każdy skrypt ma coś takiego jak katalog roboczy. Kiedy uruchamiasz go z terminala 'ręcznie' to katalogiem roboczym jest ten, w którym go wykonujesz. Jednak, gdy klikasz z poziomu KDE, katalogiem roboczym jest zapewne jakiś katalog KDE.
Sposobów na obejście tego jest kilka. Możesz np. zmienić interpreter z 'sh' na skrypt np. 'wykonaj_sh', który najpierw przejdzie do katalogu ze skryptem, a dopiero potem wykona skrypt.
Nazwa katalogu ze skryptem chyba będzie łatwa do odgadnięcia, bo KDE wykona Twój skrypt za pomocą ścieżki absolutnej.

Jeśli potrzebujesz tego rozwiązania dla tylko jednego skryptu, zainteresuj się plikami .desktop. Np. kliknij sobie prawym klawiszem myszy na pulpicie, wybierz 'Utwórz Nowe'->'Skrót do programu'->zakładka 'Program'. I ustaw sobie tam nazwę skryptu i katalog roboczy, a w 'Zaawansowanych' zaznacz 'Uruchom w terminalu'.

Powodzenia

PS. 'ten ls' był po to, by pokazać, że w xterm możesz wykonać dowolną komendę :)

Bees

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #4 dnia: 2007-05-20, 15:53:10 »
2007-05-20 09:25:47 xis napisał:

> Bo pewnie odwołujesz się za pomocą ścieżki względnej. Pamiętaj, że każdy skrypt ma coś takiego
 > jak katalog roboczy. Kiedy uruchamiasz go z terminala 'ręcznie' to katalogiem roboczym jest ten,
 > w którym go wykonujesz. Jednak, gdy klikasz z poziomu KDE, katalogiem roboczym jest zapewne
 > jakiś katalog KDE.

Tego akurat sie domyslilem ze zabraklo mu sciezki... Nie zmiena to jednak faktu ze nie za bardzo wiem jak sobie z tym poradzic (...)
Chodzi mi o uniwersalne rozwiazanie (nie dla jednego skryptu bo na to szkoda czasu), ale gdziekolwiek katalog ze skryptem sie znajduje to go mozna wykonac przez podwojne klikniecie (rozszerzenie).
Moze jest na to jakis patent , kawalek uniwersalnego kodu, ktory trzeba gdzies wstawic aby taki efekt uzyskac. Nie chcialbym wywazac otwartych drzwi ...
 
 > Sposobów na obejście tego jest kilka. Możesz np. zmienić interpreter z 'sh' na skrypt np.
 > 'wykonaj_sh', który najpierw przejdzie do katalogu ze skryptem, a dopiero potem wykona skrypt.

Czy znaczy to, ze trzeba na sztywno wpisac sciezke?
Jesli tak to malo wszechstronne.

Pozdrawiam!

xis

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #5 dnia: 2007-05-20, 21:32:29 »
2007-05-20 15:53:10 Bees napisał:

 >
 > Czy znaczy to, ze trzeba na sztywno wpisac sciezke?
 > Jesli tak to malo wszechstronne.
 >
Właśnie nie, bo - jak napisałem linijkę niżej - KDE wykonuje Twój skrypt (prawdopodobnie) ze ścieżki absolutnej = masz całą ścieżkę pod ręką.

Prosty scenariusz (niech skrypt nazywa się skrypt.sh i leży w /home/bees/skrypt.sh):
1) klikasz na skrypt.sh
2) KDE ma skojarzenie na (Twojej produkcji) 'wykonaj_sh', więc wykonuje 'wykonaj_sh /home/bees/skrypt.sh', a wtedy 'wykonaj_sh':
3) przechodzi do katalogu, ktorego nazwę pobiera z $0
4) wykonuje np. 'konsole --noclose -e "$0"' (raczej bez parametrów, bo kliknięciem ich nie przekażemy ;))
5) koniec

Trochę pracy wymaga jedynie pkt. 3, w którym musisz jakoś wyciągnąć katalog ze zmiennej $0, ale skoro masz wszystko podane w $0, to da się to zrobić za pomocą np. cut, awk.

Podsumowując: 'wykonaj_sh' jest wrapperem, który jest kojarzony z plikami skryptów. Zawiera trzy podstawowe f-cje: 1) ustalenie katalogu roboczego na podstawie ścieżki do wykonywanego skryptu, 2) przejście do tego katalogu, 3) wykonanie skryptu za pomocą np. konsole.


Ja bym to własnie tak zrobił (ale najpierw bym pogooglował za prostszym rozwiązaniem ;) - choć wierzę, że już to zrobiłeś).

Powodzenia

xis

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #6 dnia: 2007-05-20, 21:46:29 »
Jeszcze mi się przypomniało jak w łatwy sposób wyciągnąć w jakim katalogu jest plik.
Jeśli plik jest w /home/bees/skrypty/skrypt.sh, to

find /home/bees/skrypty/skrypt.sh -printf %h

zwróci właśnie /home/bees/skrypty.

W ten sposób operacja pobierania katalogu sprowadza się do jednego polecenia :)
Czyli wykonaj_sh może mieć postać:

-----
#!/bin/bash
cd `find $0 -printf %h`
konsole --noclose -e "$0"
-----


Mam nadzieję, że to Ci pomoże :)

Bees

  • Gość
uruchomienie skryptu w KDE
« Odpowiedź #7 dnia: 2008-01-19, 23:03:24 »
Cytat: xis
Jeszcze mi się przypomniało jak w łatwy sposób wyciągnąć w jakim
W ten sposób operacja pobierania katalogu sprowadza się do jednego polecenia :)
Czyli wykonaj_sh może mieć postać:

-----
#!/bin/bash
cd `find $0 -printf %h`
konsole --noclose -e "$0"
-----
Mam nadzieję, że to Ci pomoże :)
Niestety ... nie pomoglo.
Moja znajomosc rzeczy jest jeszcze niewystarczajaca do tego typu rozwiazan. Podane wyzej wywoluje  petle , uruchamia wiele konsoli. (tym razem w Ubuntu)
Mialem nadzieje, ze ktos dal sobie z tym rade, ale nic bede musial zyc bez tego. W innym systemie jest to o wiele prostsze , wywolanie skryptu z cygwina nie rodzi takiego bolu.
Na marginesie jest to bardzo dziwne, ze tryb graficzny nie dziedziczy tego co bylo norma w tekstowym i potrzebne sa do tego magiczne sztuczki.

Pozdrawiam!