maniack28 | dinsdag 10 april 2007 @ 15:26 |
Ok, ik ben echt een unixnoob (kan nog net ls ) maar ik heb unix nodig voor iets. Ik heb een programma dat iedere 6 uur gedraaid moet worden, dat kan met een cronjob. Geen probleem dus.. maar, dat programma heeft ook andere bestanden nodig die moeten gedownload worden van een server. De map waarin die bestanden staan hebben een datumaanduiding, de bestanden hebben een tijdaanduiding (00z,06z,12z,18z). Ik kan alleen nergens echt een fatsoenlijke handleiding vinden over hoe ik een shell/batch kan maken die zoiets doet. Ik loop al vast bij: #!/bin/sh Dit roept de shell aan ofzo? Maar waar kan ik vinden welke shell (C-shell of Bourne-shell) onze uni gebruikt... en als ik geen toegang tot bin oid heb, hoe moet ik dat dan omzeilen?
Kortom, ik snap er geen kont van, kan ook geen fatsoenlijke handleiding vinden tot nog toe.. dus het zou fijn zijn als iemand er hier verstand van heeft  |
Aoristus | dinsdag 10 april 2007 @ 15:28 |
begin bij het begin, dat is het makkelijkst.
Je moet weten welke rechten je nodig hebt, wat je met die bestanden moet doen, of je een ander proces in de gaten moet houden.
Als je eenmalig een simpel downloaddingetje wil doen en misschien iets anders er bij, dan kun je een at jobje gebruiken. Type dan na je (korn of csh, $) shell in:
at 15.45 << EOF > wget ftp.mijnserver.nl/pub/blaat.tgz > banner klaar > EOF
(EOF staat voor end of file) |
maniack28 | dinsdag 10 april 2007 @ 15:29 |
quote: Ja en het begin is?  |
Bigs | dinsdag 10 april 2007 @ 15:29 |
http://www.google.com/search?client=safari&rls=en&q=bash+scripting+tutorial&ie=UTF-8&oe=UTF-8
 |
eleusis | dinsdag 10 april 2007 @ 15:32 |
Je hebt altijd toegang tot /bin. Welke shells je hebt kan je checken met 'which'.SPOILERepia:~> which sh /bin/sh epia:~> which tcsh /bin/tcsh epia:~> which bash bash: Command not found. Zo ziet men hier dat ik bash niet heb en sh alsmede tcsh wel. |
Aoristus | dinsdag 10 april 2007 @ 15:33 |
quote: heb ik al ge-edit. Je kan ook de man(ual) proberen, type dan in :
apropos crontab (dan zie je alle gerelateerde commando's)
of direct: man crontab
en dan begint de echte hel pas |
maniack28 | dinsdag 10 april 2007 @ 15:34 |
quote:Op dinsdag 10 april 2007 15:32 schreef soylent het volgende:Je hebt altijd toegang tot /bin. Welke shells je hebt kan je checken met 'which'. SPOILERepia:~> which sh /bin/sh epia:~> which tcsh /bin/tcsh epia:~> which bash bash: Command not found. Zo ziet men hier dat ik bash niet heb en sh alsmede tcsh wel. Okies.. ik heb ze alle drie dus dat is geen probleem. Maar neem nu als voorbeeld dit:quote:#!/bin/sh # dit programma zegt vriendelijk goedendag
echo Hallo, allemaal! ; exit 0 Dat werkt dus al gewoon niet... Ja sh staat in /bin/sh Hij geeft:
/gradstest/voorbeeld.c: Command not found. |
Lucille | dinsdag 10 april 2007 @ 15:34 |
De eerste regel geeft al aan welke shell het is. In je voorbeeld is het de Bourne shell (sh), hoewel op bijna elk Linux platform een echte Bourne shell vervangen is door de Bourne Again shell (bash), ook al staat er sh. |
maniack28 | dinsdag 10 april 2007 @ 15:35 |
quote:Op dinsdag 10 april 2007 15:33 schreef Aoristus het volgende:[..] heb ik al ge-edit. Je kan ook de man(ual) proberen, type dan in : apropos crontab (dan zie je alle gerelateerde commando's) of direct: man crontab en dan begint de echte hel pas I know Manuals in unix zuigen haha  |
eleusis | dinsdag 10 april 2007 @ 15:35 |
quote:Op dinsdag 10 april 2007 15:34 schreef maniack28 het volgende:[..] Okies.. ik heb ze alle drie dus dat is geen probleem. Maar neem nu als voorbeeld dit: [..] Dat werkt dus al gewoon niet...  Ja sh staat in /bin/sh Hij geeft: /gradstest/voorbeeld.c: Command not found. Noem het eens bla.sh en doe eens: chmod a+x bla.sh, daarmee maak je het executable. Verder staat in unix meestal '.' (de huidige dir) niet in je PATH, dus moet je aanroepen: ./bla.sh ipv gewoon bla.sh. |
maniack28 | dinsdag 10 april 2007 @ 15:37 |
quote:Op dinsdag 10 april 2007 15:35 schreef soylent het volgende:[..] Noem het eens bla.sh en doe eens: chmod a+x bla.sh, daarmee maak je het executable. Verder staat in unix meestal '.' (de huidige dir) niet in je PATH, dus moet je aanroepen: ./bla.sh ipv gewoon bla.sh. Ok.. had ook maar een willekeurige extensie meegegeven  |
Aoristus | dinsdag 10 april 2007 @ 15:37 |
quote: type eens in : set (om je variabelen te laten zien) |
eleusis | dinsdag 10 april 2007 @ 15:38 |
quote: De extensie maakt niet uit, maar sh-scripts worden meestal .sh genoemd.. |
maniack28 | dinsdag 10 april 2007 @ 15:40 |
quote: quote:csh> set COLORS /etc/DIR_COLORS.xterm _ addsuffix argv () cwd /home/students/0470007 dirstack /home/students/0470007 dspmbyte utf8 echo_style both edit file /home/students/0470007/.i18n gid 1360 group students history 20 home /home/students/0470007 killring 30 notify owd path (/usr/local/pgi/linux86-64/6.0/bin /usr/local/intel/intel_fce_80/bin /usr/local/intel/intel_cce_80/bin /usr/local/texlive/2005/bin/x86_64-linux /usr/local/sge/bin/lx24-amd64 /usr/local/grace/bin /usr/local/bin /usr/local/GMT4.1.1/bin /usr/local/ncarg/bin /usr/X11R6/bin /usr/local/pgi/linux86-64/6.0/bin /usr/local/intel/intel_fce_80/bin /usr/local/intel/intel_cce_80/bin /usr/local/texlive/2005/bin/x86_64-linux /usr/local/sge/bin/lx24-amd64 /usr/local/grace/bin /usr/local/bin /usr/local/GMT4.1.1/bin /usr/local/ncarg/bin /usr/X11R6/bin /usr/kerberos/bin /usr/local/bin /usr/bin /bin /usr/X11R6/bin . /home/students/0470007/bin . /home/students/0470007/bin) prompt csh> prompt2 %R? prompt3 CORRECT>%R (y|n|e|a)? shell /bin/tcsh shlvl 2 sourced 1 status 0 tcsh 6.13.00 term xterm tty pts/263 uid 6284 user 0470007 version tcsh 6.13.00 (Astron) 2004-05-19 (x86_64-unknown-linux) options 8b,nls,dl,al,kan,rh,color,dspm,filec Hier is je set  |
maniack28 | dinsdag 10 april 2007 @ 15:45 |
quote:Op dinsdag 10 april 2007 15:35 schreef soylent het volgende:[..] Noem het eens bla.sh en doe eens: chmod a+x bla.sh, daarmee maak je het executable. Verder staat in unix meestal '.' (de huidige dir) niet in je PATH, dus moet je aanroepen: ./bla.sh ipv gewoon bla.sh. Hij doet het  |
Aoristus | dinsdag 10 april 2007 @ 15:45 |
quote: Een % dus?
tcsh is tiny c shell dacht ik. Je variabelen kun je eventueel editten in .cshrc, zoals hoe je shell er uit ziet, hoever je history teruggaat, je zoekpaden etc). |
maniack28 | dinsdag 10 april 2007 @ 15:46 |
quote:Op dinsdag 10 april 2007 15:45 schreef Aoristus het volgende:[..] Een % dus? tcsh is tiny c shell dacht ik. Je variabelen kun je eventueel editten in .cshrc, zoals hoe je shell er uit ziet, hoever je history teruggaat, je zoekpaden etc). Volgens mij heb ik nog duizend stappen te gaan tot wat ik wil Maar ik kom er wel  |
Aoristus | dinsdag 10 april 2007 @ 15:51 |
quote:Op dinsdag 10 april 2007 15:46 schreef maniack28 het volgende:[..] Volgens mij heb ik nog duizend stappen te gaan tot wat ik wil  Maar ik kom er wel  ja, je moet eerst de kunst van vi begrijpen (visual impaired), anders kan je je crontab niet wijzigen |
eleusis | dinsdag 10 april 2007 @ 15:54 |
Fuck vi nano 4 live  |
maniack28 | dinsdag 10 april 2007 @ 15:57 |
quote:Op dinsdag 10 april 2007 15:51 schreef Aoristus het volgende:[..] ja, je moet eerst de kunst van vi begrijpen (visual impaired), anders kan je je crontab niet wijzigen Vast niet En als dat wel moet, dan laat ik dat wel door iemand anders doen VI is zooooooo irritant.. ik snap niet eens hoe ik daar moet typen ^^ Gebruik liever een text-editor  |
maniack28 | dinsdag 10 april 2007 @ 15:57 |
quote: pico werkt ook  |
Aoristus | dinsdag 10 april 2007 @ 16:06 |
quote:Op dinsdag 10 april 2007 15:57 schreef maniack28 het volgende:[..] Vast niet  En als dat wel moet, dan laat ik dat wel door iemand anders doen  VI is zooooooo irritant.. ik snap niet eens hoe ik daar moet typen ^^ Gebruik liever een text-editor  
Als je dat begrijpt, dan begrijp je makkelijker hoe je betere mutaties kan maken met sed en awk. Perl is daarna dan een stuk beter te begrijpen.
als je de regel van man crontab begrijpt, dan kun je eventueel het volgende doen:
% crontab -e (sturen met de pijltje Jeneden, Koven, Hinks en Lechts, i is insert, esc is functie, x is delete)
vul je regel in * * * * 15 wget ftp.mijnserver/pub/*z
<esc> :wq! |
devzero | dinsdag 10 april 2007 @ 16:08 |
Niks mis mee :')
@TS: er zijn zat beginners-manuals te vinden, maar je kunt ook gewoon een bibliotheek binnen lopen.
Voor die tijdsaanduiding in de filename kun je het commando date gebruiken (zie man date voor volledige syntax). Bv in sh/bash
1 | filename=`date +"bestand-%H"` |
plakt het uur achter de naam bestand en zet dat in de variabele $filename. Als je alleen niets over het werken van de back-quote en variabelen weet, dan zal het nog lastig worden :) |
maniack28 | dinsdag 10 april 2007 @ 16:10 |
quote:Op dinsdag 10 april 2007 16:06 schreef Aoristus het volgende:[..]  Als je dat begrijpt, dan begrijp je makkelijker hoe je betere mutaties kan maken met sed en awk. Perl is daarna dan een stuk beter te begrijpen. als je de regel van man crontab begrijpt, dan kun je eventueel het volgende doen: % crontab -e (sturen met de pijltje Jeneden, Koven, Hinks en Lechts, i is insert, esc is functie, x is delete) vul je regel in * * * * 15 wget ftp.mijnserver/pub/*z <esc> :wq! Ziet er leuk uit.. maar wat voor zin heeft het om een crontab te begrijpen als ik hem nog niet nodig heb? Ik ga eerst eens pielen met variabelen maken, datums opvragen, daaruit een "bestandsnaam" creeren die hij met wget gaat ophalen van een server... als dat gelukt is kan ik eens naar crontab gaan kijken, maar die heeft geen zin zolang ik niks heb om uit te voeren ^^ |
maniack28 | dinsdag 10 april 2007 @ 16:11 |
quote:Op dinsdag 10 april 2007 16:08 schreef devzero het volgende:[ code verwijderd ] Niks mis mee  @TS: er zijn zat beginners-manuals te vinden, maar je kunt ook gewoon een bibliotheek binnen lopen. Voor die tijdsaanduiding in de filename kun je het commando date gebruiken (zie man date voor volledige syntax). Bv in sh/bash [ code verwijderd ] plakt het uur achter de naam bestand en zet dat in de variabele $filename. Als je alleen niets over het werken van de back-quote en variabelen weet, dan zal het nog lastig worden  Was ik net aant uitzoeken  |
devzero | dinsdag 10 april 2007 @ 16:14 |
quote: crontab komt idd wel als je script werkt. Overigens is er een centraal topic waar mensen je graag helpen met shell vraagjes: [Linux/Unix] [/Gurus/helpen/newbies]$ ./deel 16 |
maniack28 | dinsdag 10 april 2007 @ 16:16 |
quote: Dank Die had ik niet gezien.. ik denk dat deze dan wel dicht kan, mijn vraagjes stel ik daar wel!
iig bedankt allemaal voor de goeie reacties, ik ben al 100% verder dan net  |
slakkie | woensdag 11 april 2007 @ 21:25 |
quote:Op dinsdag 10 april 2007 15:51 schreef Aoristus het volgende:[..] ja, je moet eerst de kunst van vi begrijpen (visual impaired), anders kan je je crontab niet wijzigen Dmv je EDITOR enviroment variable kan je dit aanpassen naar elke editor die je wilt.
export EDITOR=nano en je crontabs zal je dan met nano openen. |
Aaargh! | woensdag 11 april 2007 @ 21:50 |
quote: Waarom zou je nano willen als er al vi op staat ? |
gday | donderdag 12 april 2007 @ 02:13 |
quote: Omdat vi ongelofelijk zuigt uiteraard. Dat vind ik reden genoeg. 
Ik ben zelf overigens een liefhebber van joe. |
slakkie | donderdag 12 april 2007 @ 08:22 |
quote: Geen idee, maar sommige mensen willen geen vi(m). Ow, ik had toch een idee |
RemcoDelft | vrijdag 13 april 2007 @ 17:12 |
Even offtopic reageren: vi is simpelweg geweldig! Als je even de moeite neemt om het ding te leren gebruiken... Zeggen dat vi "zuigt" is zoiets als zeggen dat "met 10 vingers typen zuigt" of "autorijden zuigt, want lopen is veel makkelijker" |
Aoristus | vrijdag 13 april 2007 @ 17:29 |
quote:Op vrijdag 13 april 2007 17:12 schreef RemcoDelft het volgende:Even offtopic reageren: vi is simpelweg geweldig! Als je even de moeite neemt om het ding te leren gebruiken... Zeggen dat vi "zuigt" is zoiets als zeggen dat "met 10 vingers typen zuigt" of "autorijden zuigt, want lopen is veel makkelijker" Ze zouden het die kinderen op school moeten leren |
gday | vrijdag 13 april 2007 @ 17:47 |
quote:Op vrijdag 13 april 2007 17:12 schreef RemcoDelft het volgende:Even offtopic reageren: vi is simpelweg geweldig! Als je even de moeite neemt om het ding te leren gebruiken... Zeggen dat vi "zuigt" is zoiets als zeggen dat "met 10 vingers typen zuigt" of "autorijden zuigt, want lopen is veel makkelijker" Tja, dat kun je over zowat elke editor zeggen hoor. |
maniack28 | vrijdag 13 april 2007 @ 18:02 |
Ik heb liever pico.. VI is gewoon irri  |
RemcoDelft | vrijdag 13 april 2007 @ 18:20 |
quote: Ze zouden kinderen op school eens moeten leren typen... O wacht, met de huidige hervormingen waarmee VWOers al niet meer kunnen rekenen komt dat er vast nooit van... |
Litpho | vrijdag 13 april 2007 @ 18:27 |
quote:Op vrijdag 13 april 2007 17:12 schreef RemcoDelft het volgende:Even offtopic reageren: vi is simpelweg geweldig! Als je even de moeite neemt om het ding te leren gebruiken... Ik heb ook maar een Windowsversie geinstalleerd na herhaalde keren vi tikken op de commandprompt en nul op het rekest te krijgen . |
Aaargh! | vrijdag 13 april 2007 @ 18:43 |
quote: eeh.. nee dus. Er zijn weinig editors met zo ongelovelijk veel mogelijkheden als vi. |
RemcoDelft | vrijdag 13 april 2007 @ 19:56 |
Ik heb hier een vi-boek staan trouwens; ruim 300 pagina's... Ooit ga ik hem helemaal doorlezen:) |
slakkie | zaterdag 14 april 2007 @ 09:32 |
quote:Op vrijdag 13 april 2007 18:43 schreef Aaargh! het volgende:[..] eeh.. nee dus. Er zijn weinig editors met zo ongelovelijk veel mogelijkheden als vi. Emacs  |
maniack28 | zaterdag 14 april 2007 @ 09:37 |
Ik denk dat je het moet zien als html vs php ofzo.. VI is uitgebreider, maar ook veel ingewikkelder, dus de drempel om het te leren ligt hoger. Ik heb het voorlopig niet nodig, dus waarom zou ik het gebruiken?  |
Bigs | zaterdag 14 april 2007 @ 11:27 |
quote:Op zaterdag 14 april 2007 09:37 schreef maniack28 het volgende:Ik denk dat je het moet zien als html vs php ofzo.. VI is uitgebreider, maar ook veel ingewikkelder, dus de drempel om het te leren ligt hoger. Ik heb het voorlopig niet nodig, dus waarom zou ik het gebruiken?  Dat is dan weer een vergelijking van niks.. html en php zijn twee totaal verschillende dingen (opmaaktaal vs programmeertaal). |
Litpho | zaterdag 14 april 2007 @ 11:42 |
quote:Op zaterdag 14 april 2007 11:27 schreef Bigs het volgende:[..] Dat is dan weer een vergelijking van niks.. html en php zijn twee totaal verschillende dingen (opmaaktaal vs programmeertaal). Nou ja, programmeertaal . |
gday | zaterdag 14 april 2007 @ 12:04 |
quote:Op vrijdag 13 april 2007 18:43 schreef Aaargh! het volgende:[..] eeh.. nee dus. Er zijn weinig editors met zo ongelovelijk veel mogelijkheden als vi. En vertel eens: wie hebben al die mogelijkheden nodig? Wat mij betreft is het een beetje een vergelijking tussen de wagen van James Bond en een gewone Ford Focus ofzo. |
maniack28 | zaterdag 14 april 2007 @ 12:09 |
quote:Op zaterdag 14 april 2007 11:27 schreef Bigs het volgende:[..] Dat is dan weer een vergelijking van niks.. html en php zijn twee totaal verschillende dingen (opmaaktaal vs programmeertaal). Pffft... je maakt met beide een website 
Nou ok dan.. uhm.. Excel en Origin (of Mathlab of IDL). Dat beter?  |