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: daton 19 Května 2011, 07:31:27
-
Dobrý den
Jsem začátečník a prosím o radu. Chtěl bych si zkusit psát scripty v bash ale nějak nevím jak na to. Z win jsem byl zvyklý že něco stvořím např v ps padu nebo podobném programu a hodím to do prográmku a už to jede.
V linuxu jsem objevil mousepad. Mám ale stále problémy jak vytvořit soubor se skriptem, a jakou mu dát příponu. Vím že existuje editor vi nebo vim ale jsou pro začátečníka jsou oba dost komplikované. Prosím nemáte někdo tip na dobrý editor?
Druhá otázka zkoušel jsem příkaz at načasování spuštění scriptu. Vytvořil jsem tedy jednoduchý script na
#!/bin/bash
echo "Hello world."
zkusil jsem ho dát uložit jako soubor pokus.txt
chmod x pokus.txt no a pak jsem zadal at 8:00 14.5.2011 /pokus.txt
ale v syntaxy je chyba zřejmě jsem to špatně uložil. Máte někdo nějaký nápad jak? ;) ;)
-
Na skriptování osobně používám "gedit", který je součástí instalace Ubuntu...např pro editaci souboru "pokus.sh", spusť:
gedit pokus.sh
...soubor se vytvoří v aktuálním adresáři - čili pokud najedeš do terminálu, tak soubor pokus.sh najdeš v /home/USER
Příponu *.sh jsem zvolil záměrně, pač osobně skriptuji jen v shellu Bash...můžeš použít klidně i python nebo perl, jak je libo ...s Bashem jsem si se vším vždy vystačil. Podle interpreteru, který jsi použil ty (#!/bin/bash) budeš ale Bash používat též..
Co se týká "at", tak s tím moc neporadím, do skriptu jsem to nikdy nepoužil..když chci něco spouštět časovaně, tak používám Cron (http://operacni-systemy.eu/index.php?poradna=1)
-
Na pripone suboru nezalezi, ale zvykom je davat nazovScriptu.sh. Dolezita su prava, ktore si nastavoval cez
chmod +x nazovScriptu.sh
. Ku prikazu at pozri man at
.
Ja som skusil na ukazku toto:
-bash-3.2$ at -f ./pokus.sh -t 201105190913
job 1 at 2011-05-19 09:13
-bash-3.2$ at -l
1 2011-05-19 09:13 a pgula
-bash-3.2$ date
Thu May 19 09:12:26 CEST 2011
-bash-3.2$ date
Thu May 19 09:13:20 CEST 2011
You have mail in /var/spool/mail/pgula
-bash-3.2$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/pgula": 1 message 1 new
>N 1 pgula@chong.map24.lo Thu May 19 09:13 1015/4532 "Output from your job 1"
-bash-3.2$ at -l
-bash-3.2$
-
Normálně otevři jakýkoli textový editor (třeba gedit, je ve výchozí instalaci nebo klidně i ten mousepad). Něco do něj napiš (ten příklad máš správně), ulož ten soubor (pojmenuj ho jak chceš, s jakoukoli příponou, na tom vůbec nezáleží, obvykle se ale dává .sh). Přidej tomu souboru spustitelný příznak (http://wiki.ubuntu.cz/Spustiteln%C3%BD%20p%C5%99%C3%ADznak) a spusť ho (dvojklik a vyber "spustit v terminálu").
Tenhle příklad má "vadu" -- pokud to uděláš tak, jak jsem psal, tak žádný výsledek neuvidíš, protože postup bude následující: spustíš soubor, otevře se okno terminálu, vypíše "Hello world." a okamžitě se zavře (většinou tak rychle, že to ani nezaznamenáš). Řešením je buď to spouštět přímo z terminálu (kde se tedy to okno nezavře) nebo si nakonec toho skriptu přidat "read", takže terminál bude čekat na stisknutí klávesy a teprve pak se zavře.
K at: Špatně napsaná cesta k souboru "/pokus.txt" systému řekne, že ten pokus.txt je v kořenové adresáři, kde určitě není.
-
Dobré odpoledne
moc děkuji za příspěvky, rozhodně pomohly.
Jen si nějak stále nerozumím s tím at ale postupně budu bádat dál.
Zde je ukázka jak jsem bádal:
[root@localhost ja]# at -f ./pokus4.sh -t 201105191204
at: invalid option -- 't'
Usage: at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
batch
[root@localhost ja]# at -l 1 2011-05-19 12:06 a kokos
[root@localhost ja]# ls /var/spool/mail/kokos
[root@localhost ja]# ls /var/spool/at
spool/
[root@localhost ja]# ls -a /var/spool/mail/kokos
./ ../
[root@localhost ja]#
Už přemýšlím že zkusím i ten cron ale PETERovi ten at v ukázce chodil, tak nevím kde mám chybu.
-
Píše to, že parametry jsou -mldbv a že parametr -t to nezná.
PS: na časové spouštění rozhodně využijte cron.
-
Přepínač -t se nemusí zadávat, tak ho můžeš zkusit smazat, ale je podivné, že ho to odmítá.
Pak bych ti doporučil dělat pokusy pod normálním uživatelem, tam je daleko menší šance, že si poděláš celý systém.
-
Už přemýšlím že zkusím i ten cron ale PETERovi ten at v ukázce chodil, tak nevím kde mám chybu.
Aky mas system?, aku verziu at prikazu mas? ...
Cron je samozrejme na spustanie tiez moznost, ale at na jednoduche naplanovanie tiez staci, to ze tvoj at nepozna prepinac -t znamena, ze mas inu verziu ako ja. Ja mam xubuntu 11.04 64bit system. Len pre info at -V
ti vypise verziu at prikazu a preto som Ta aj odkazoval na manual ku at prikazu aby si to zladil s tym co mas.
-
Dobrý večer
tak to zkouším doma na ubuntu 10,04 s verzí at 3.1.12 . V práci dopoledne jsem měl starší verzi. Tato verze již zná -t a celkově se chová jako Peterova. Jen to celé má nějakou malou chybu a stále se mi ji nedaří odhalit. Vše dokáži zopakovat po Peterově vzoru, jen výsledek se mi v terminále neobjeví. Nejsem si jist proč. Protože vše je zadané i at -l mi vypíše že ukol je zadán a čeká, no a to je vše po stanoveném čase se už v listě úkol neobjeví.
ja@ja-ThinkPad-R50:~$ bash pokus1.sh
Hello world. read
ja@ja-ThinkPad-R50:~$ at -f ./pokus1.sh -t 201105192126
warning: commands will be executed using /bin/sh
job 7 at Thu May 19 21:26:00 2011
ja@ja-ThinkPad-R50:~$ at -l
7 Thu May 19 21:26:00 2011 a ja
ja@ja-ThinkPad-R50:~$ date
Čt kvě 19 21:24:47 CEST 2011
ja@ja-ThinkPad-R50:~$ at -l
ja@ja-ThinkPad-R50:~$ date
Čt kvě 19 21:27:24 CEST 2011
I ta moc díky všem za rady. Prosím mohl by jste zde někdo uvést jednoduchý příklad časovače s cronem? Třeba s ním budu mít větší štěstí.
-
at nic neví o tom kam má výsledek vypsat, zjistíme si ručně jaký je spuštěný virtuální terminál a pošleme tam výstup
dejte si v terminálu
w | grep w
objeví se něco jako daton pts/6 :0 09:06 0.00s 0.52s 0.00s w
důležitý je ten pts/6, viz skript
tento terminál nezavírejte, budeme na něj vypisovat.
obsah skriptu pokus.sh bude
#!/bin/bash
echo "Hello world." > /dev/pts/6
exit 0
a spusťte si jej včetně plné cesty /.... (upravte si ji podle toho kde skript máte)
at -f /home/daton/pokus.sh -t 201105192226
-------------
trocha okynek:
a zkuste si v at
at -f /home/daton/pokus2.sh -t 201105192226
spustit pokus2.sh:
#!/bin/bash
export DISPLAY=:0 && zenity --info --text="Hello world."
Tady je to jednodušší, zenity spuštěné přes at sice opět neví kam to vypsat, ale to zabezpečíme číslem displeje které jsou číslované od :0
Většinou tu :0 budete mít, kdyby ne tak váš aktuální zjistíte jednoduše:
echo $DISPLAY
-
Dobrý den
moc děkuji panu Martinovi, ted už mi to chodí jak má ;D. Ty zenity jsou opravdu zajímavé trochu mi to připomíná hlášky, které jsme používaly v delphi, a ty se hodí pro upozorňování nejlépe. :)
Ještě se zeptám na Midnight comander, on má i interní editor pro úpravy konfiguračních souborů. Jde s tímto editorem vytvořit nový soubor? Případně jde tímto editorem upravit název konfiguračního souboru?
Někdy se totiž vyskytne potřeba zkopírovat konfigurační soubor a v něm provést úpravu jenže jak změnit název staršího konf souboru? Prozatím jsem to řešil přes nějaký textový editor ale zajímaly by ne možnosti toho MC.
-
Dobrý den
moc děkuji panu Martinovi, ted už mi to chodí jak má ;D. Ty zenity jsou opravdu zajímavé trochu mi to připomíná hlášky, které jsme používaly v delphi, a ty se hodí pro upozorňování nejlépe. :)
Ještě se zeptám na Midnight comander, on má i interní editor pro úpravy konfiguračních souborů. Jde s tímto editorem vytvořit nový soubor? Případně jde tímto editorem upravit název konfiguračního souboru?
Někdy se totiž vyskytne potřeba zkopírovat konfigurační soubor a v něm provést úpravu jenže jak změnit název staršího konf souboru? Prozatím jsem to řešil přes nějaký textový editor ale zajímaly by ne možnosti toho MC.
prejmenovani se resi pomoci F6 (presun/prejmenovani)
na zalozeni souboru staci touch jmeno_souboru
-
Dobrý den
moc děkuji panu Martinovi, ted už mi to chodí jak má ;D. Ty zenity jsou opravdu zajímavé trochu mi to připomíná hlášky, které jsme používaly v delphi, a ty se hodí pro upozorňování nejlépe. :)
Ještě se zeptám na Midnight comander, on má i interní editor pro úpravy konfiguračních souborů. Jde s tímto editorem vytvořit nový soubor? Případně jde tímto editorem upravit název konfiguračního souboru?
Někdy se totiž vyskytne potřeba zkopírovat konfigurační soubor a v něm provést úpravu jenže jak změnit název staršího konf souboru? Prozatím jsem to řešil přes nějaký textový editor ale zajímaly by ne možnosti toho MC.
prejmenovani se resi pomoci F6 (presun/prejmenovani)
na zalozeni souboru staci touch jmeno_souboru
Ohladom editora od MC:
shift+f4 - otvori editor s novym/prazdnym suborom
shift+f2 - v editore opyta sa na novy nazov suboru save as
-
Dobré odpoledne
moc děkuji za rady ohledně všech dotazů co jsem zde vznesl. Hodně mi pomohly.
Díky všem ;)