Basis van Linux en de opdrachtregel
$ ls
a.log b.log notes.txt
$ for f in *.log; do mv "$f" "${f%.log}.txt"; doneWelke bestanden staan na de bovenstaande sessie in de directory?
- Aa.log.txt, b.log.txt, notes.txt
- BNog steeds a.log, b.log, notes.txt, waarbij de tekenreeks „.log” in a.log en b.log door „.txt” is vervangen
- Ca.txt, b.txt, notes.txt
Antwoord en toelichting tonen
Antwoord: C. a.txt, b.txt, notes.txt
for f in *.log zet a.log en b.log, die overeenkomen met *.log, een voor een in de variabele f en herhaalt het deel tussen do en done. ${f%.log} is de waarde van f waarvan .log aan het einde is weggehaald, dus voor a.log is het a, en mv "$f" "${f%.log}.txt" hernoemt a.log naar a.txt. notes.txt komt niet overeen met *.log en blijft ongewijzigd. "$f" staat tussen dubbele aanhalingstekens zodat een naam met spaties als één argument aan mv wordt doorgegeven.
Verder: nog 9 vragen over Basis van Linux en de opdrachtregel