Hopelijk is dit de juiste plek om te vragen naar een (goed) boek om het schrijven van bash scripts te leren. Ik ben het O’Reilly boek "Learning the Bash Shell " van Cameron Newham tegengekomen. Het is niet bepaald een recente uitgave, maar dat is waarschijnlijk niet belangrijk.
Heeft iemand suggesties?
Deze gebruik ik zelf veel op de “hoe zat dat ook al weer” momenten: http://www.tldp.org/LDP/abs/abs-guide.pdf .
Dank voor je snelle en nuttige reactie. De pdf staat intussen op mijn e-reader. Maar helaas ben ik nog lang niet in de buurt van het “hoe zat dat ook al weer” niveau. Maar ik weet wel dat een compleet overzicht zoals dit me zeker van pas zal komen. Ik blijf dus nog zoeken naar een (papieren) boek om me wat verder op weg te brengen.
En dat boek is natuurlijk ook prima. Misschien niet het nieuwste, maar er is hoogstens wat bijgekomen. En als je met wat in dat boek staat redelijk overweg kunt, ben je verder dan velen.
Trouwens, leuke PDF van Knurpht.
@hcvv: Dank voor het commentaar en de positieve recensie. Het boek staat intussen op mijn (verlang)lijstje. En nu maar afwachten.
Toelichting: In het (verre) verleden heb ik redelijk wat geprogrammeerd, maar scripting is nog nooit aan bod gekomen. En dat zal tijd worden!
Het was niet zozeer een positive recensie, maar de O’Reillly boeken waren altijd goed volgens mij. Wat ik eigenlijk zei ging over jouw angst voor veroudering. Die vind ik niet nodig.
Trouwens hoe oud kan dat helemaal zijn. Bash is volgens mij pas met Linux opgekomen (GNU versie van een combinatie van de Bourne shell met toevoegingen van de Korn shell en misschien de POSIX shell (maar die is apart aanwezig op je systeem). En later wat toevoegingen.
Ik denkdat je zelfs met een Bourne off Korn shell boek van dertig jaar eleden nog een goed begin kan maken. En als je eenmaal een basis hebt kun je met de man paginaas de rest wel oppakken indien nodig.
Eigenlijk wil ik hier nog wel iets aan toevoegen.
De shell is belangrijk als middel om van alles slim aan elkaar te knopen, maar minstens zo belangrijk is het om ervaring te krijgen met alle gereedschappen die geboden worden. Kortom slim aan elkaar knopen van wat eigenlijk. Het probleem is vaak dat er allerlei tools zijn om dingen aan te leveren, maar je kent ze niet. Wat helpt is af en toe door man paginaas bladeren (maar dat is electronisch niet zo makkelijk als met een papieren boek) en telkens op zijn minst een inleiding te lezen zodat je later zegt maar hë daar is iets voor.
Een willkeurig lijstje: grep, sort, sed, find, tr, diff en ook simpele als cat, ls hebben vaak onvermoed handige opties om ze in shells te gebruiken.
O ja, leer vooral ook het “|” teken (piping) begrijpen.
Hoera, je trekt een blik open.
Begrijp: file descriptors, stdin, stdout, stderr.
Wat is redirection (en piping) en waarom is
1>aap 2>&1
iets anders dan
2>&1 1>aap
Klein, maar belangrijk onderdeel van Unix/Linux.
@Knurpht Mooie pdf , dank je.
Maar het oude boek Linux in een notendop, vind ik ook nog wel een fijn boek voor de hoe zat het ook alweer momenten.
Ben nog steeds niet heel ver gevorderd, vandaar.
Lekker woordenboek voor de commando`s, allen het stuk over LILO is wat gedateerd.
@Henk, je mag van mij hier heerlijk een online training gaan geven.
1 aandachtige leerling heb je.
+nog één. Wat ik als van-nature-alfa-man altijd vreselijk gevonden heb was het “zo moet het, doe het nou maar zo” zonder enige uitleg. Bepaalde dingen gaan na 25 jaar echt wel spreken, en al doende leert men, maar heel soms ben ik lang met manuals in de weer terwijl ik de hele tijd het gevoel heb, dat ik met wat meer low-level kennis het zo voor elkaar had.
Ik wil wel wat proberen, maar de berg is nog al groot. Wat trekken we er uit om onze tanden op de scherpen?
Misschien moeten we er aparte thread / subforum (programmeren/scripting) van maken, beetje jammer als we hier net zo’n berg creëren.
Over het vette gedeelte in het statement hieronder kreeg ik onlangs een vraag van een ICT student
make -j$Jobs >> $log_file_name **2>&1**
waarom werkt het wel met, en niet zonder.
Een apart subforums lijkt me een goed idee. Het gaat niet alleen over programmeren, maar ook over begrippen. Veelal onstaa de problemen omdat men niet begrijpt (of denkt te begrijpen) wqat een begrip voorstelt.
En omtrent je vraag. Hoe bedoel je:
waarom werkt het wel met, en niet zonder.
howel je waarschijnliujk het stukje 2>&1 bedoelt weet ik niet wat je bedoelt met “erken” het werkt altijd. Hooguit niet volgens de verwachtingen ;).
Kortom: Wat waren de verwachtingen?
Ik had gezegd dat ik zonder de rest van het script daar nog niets over kon zeggen. Dus net even gebeld. Je lacht je wild: het sakc script van James :D. Blijkt ook dat ze het hele statement vernaggeld hebben (alleen de “&1” hadden ze weggehaald, waardoor de rest van het script beschouwd wordt als standaard output waarheen de standaard error geredirect wordt. Nog grappiger: via Google gezocht op “what does 2>&1 mean”, bovenste resultaat is er één van linuxhomenetworking.net met een reply van ene JimH. Als je 't leest besef je meteen dat je te maken hebt met een vroege Henderson :D.
Dus alweer volkomen gebrek aan kennis van begrippen.
Gewoon wat letters van plaats veranderen en dan roepen: Het werkt niet >:)
Poehh whats in a name.
Ben ik echt een beginnertje bij.rotfl!
Ja en dan een ander het uit laten zoeken wat er nu de oorzaak van is dat het niet werkt. :X
Is voor mij alleen maar ??? euhhhh.
Dit is echt een heel nuttige draad. En niet alleen voor mij, blijkt nu wel.
Dank voor de leerzame en/of nuttige verwijzingen. En vooral ook dank aan @hcvv voor zijn uitdagende voorbeelden van redirection en zijn onnadrukkelijke verwijzing naar file descriptors. Veel leuk en verhelderend puzzelwerk! En nu proberen alles te onthouden…
En ik ben nog niet eens begonnen!
Maar zelf opzoeken en proberen naar aanleiding van een losse kreet van mij werkt natuurlijk perfect. Dan onthoud je het natuurlijk beter.
Knurpht, wat doen we? Een apart draad?
Een draad per onderwerp lijkt me al ingewikkeld genoeg. Er komt dm commentaar en verdere vragen. Dan moeten we niet met llerlei onderwerpen in één draad zitten.
In een nieuw (sub)forums, of hier in Programmeren?