We gaan eens experimenteren met diff
om bestanden te vergelijken, en met process substitution om de uitvoer van een subshell al streamende te redirecten naar een tijdelijk invoerbestand.
Om de uitvoer van processen te vergelijken, hebben we een commando nodig waar we zinnige vergelijkingen op kunnen doen. Om eens iets anders dan gebruikelijk te nemen, gaan we gebruik maken van het objdump
-commando. Dit commando heeft heel veel opties om binaire bestanden (uitvoerbare bestanden, objectbestanden, bibliotheken, etc.) te analyseren en te disassembleren. Om het eenvoudig te houden, gaan we dit enkel gebruiken om te kijken welke functies van externe bibliotheken in een programma gebruikt worden (zoals de C standard library libc), en die met elkaar te vergelijken (van /bin/true
en /bin/date
, het eerste is extreem simpel en geeft eigenlijk enkel de waarde 0 terug, het tweede gaat de datum printen en formateren; je zal dus verwachten te zien dat date
meer datum/tijd-gerelateerde functionaliteit van de C library zal gebruiken).
diff
(met de --unified
of -u
vlag) om de bestanden /etc/fstab en /etc/mtab te vergelijken.objdump
het argument --dynamic-syms
meegeeft (en een bestand), zal alle dynamische symbolen in een bestand uitprinten. Hier zullen ook de externe functies tussen staan. Opnieuw gaan we simpel beginnen en eens deze lijst dynamische symbolen van /bin/true
uitprinten./bin/true
enkel deze lijnen over./bin/true
enkel de functienamen over uit de lijst van UND-functies. (Ik zou afraden om zomaar cut
te gebruiken aangezien er een variabel aantal spaties gebruikt wordt om kolommen te aligneren. Denk eens na over hoe een andere tool hier zou kunnen helpen; een voorbeeld is grep --only-matching
.)/bin/date
./bin/true
en /bin/date
met elkaar te vergelijken.Als je in de cursus al over vim
gelezen hebt, kan je ook eens proberen om hier (op je Linux VM) vimdiff
te gebruiken.