De Unix filosofie — waarvan Ken Thompson1 de grondlegger is — bestaat uit een reeks culturele normen en filosofische benaderingen die moeten leiden tot minimalistische, modulaire softwareontwikkeling. Ze is gebaseerd op de ervaring van toonaangevende ontwikkelaars van het Unix besturingssysteem.
De eerste generatie van Unix-ontwikkelaars waren immers echte trendsetters om de concepten van modulariteit en herbruikbaarheid in te voeren binnen de softwareontwikkelingspraktijk, waaruit een beweging van "software tools" ontsproot. Na verloop van tijd hebben die toonaangevende ontwikkelaars van Unix (en de programma's die erop uitgevoerd worden) een reeks culturele normen vastgelegd voor het ontwikkelen van software. Normen die even belangrijk en invloedrijk geworden zijn als de technologie van Unix zelf en die worden aangeduid met de term "Unix filosofie".
De Unix filosofie legt de nadruk op het bouwen van eenvoudige, korte, duidelijke, modulaire en uitbreidbare code die gemakkelijk kan worden onderhouden en hergebruikt door andere softwareontwikkelaars dan de originele makers ervan. De Unix filosofie geeft de voorkeur aan combineerbaarheid, in tegenstelling tot monolithisch ontwerp. Doug McIlroy2 — die toen aan het hoofd stond van het Bell Labs3 Computing Sciences Research Center en die de uitvinder is van de Unix pipe4 — vatte de Unix filosofie als volgt samen:
Dit is de Unix filosofie: Schrijf programma's die één ding doen en die dat ook goed doen. Schrijf programma's die kunnen samenwerken. Schrijf programma's die tekststromen verwerken, omdat dat een universele interface is.
Zoals McIlroy het zegt — en zoals algemeen aanvaard wordt binnen de Unix gemeenschap — wordt van Unix programma's altijd verwacht dat ze het DOTADIW-concept volgen: "Do One Thing and Do It Well" (doe één ding en doe dat goed).
Probeer te achterhalen welke opdracht de volgende Unix commando's uitvoeren:
date
sleep
time
history
clear
Dit kan je (onder andere) op de volgende drie manieren doen:
voer het commando uit en observeer wat er gebeurt
bekijk de handleiding van het commando door het volgende uit te voeren
$ man <commando>
$ info <commando>
gebruik de opties --help of -h van het commando
$ <commando> --help
$ <commando> -h
Hou hierbij rekening met het feit dat niet alle Unix commando's al deze hulpmiddelen ondersteunen.
Elk van de volgende opdrachten kan door minstens één van bovenstaande commando's uitgevoerd worden. Bepaal welk commando kan gebruikt worden om de opdracht uit te voeren en ga na welke opties (vlaggen) en argumenten je moet opgeven samen met commando.
wacht drie seconden
meet hoe lang het effectief duurt om het commando uit te voeren om drie seconden te wachten
schrijf vier regels uit de elk één natuurlijk getal bevatten; deze getallen moeten respectievelijk de huidige dag, de huidige maand, het huidige uur en de huidige minuut aanduiden
toon de laatste drie commando's die op de Unix command line uitgevoerd werden
Voor deze opgave moeten de vier gevraagde commando's ingediend worden. Plaats hiervoor je oplossingen voor de vier opdrachten onder de corresponderende titels in het indienvenster. Enkel het derde commando worden automatisch op correctheid getest.