Basis van Linux en de opdrachtregel

$ ls
a.log  b.log  notes.txt
$ for f in *.log; do mv "$f" "${f%.log}.txt"; done

Welke bestanden staan na de bovenstaande sessie in de directory?

  1. Aa.log.txt, b.log.txt, notes.txt
  2. BNog steeds a.log, b.log, notes.txt, waarbij de tekenreeks „.log” in a.log en b.log door „.txt” is vervangen
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. Een uitvoerbaar script run.sh in de huidige directory geeft „command not found” als het wordt gestart door „run.sh” te typen, maar wordt wel uitgevoerd als „./run.sh” wordt getypt. Wat is de reden?
  2. Wat is de combinatie van de uitvoer van de twee bash -c-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  3. Wat is de belangrijkste functie van een pakketbeheersysteem in Linux (apt op Debian-gebaseerde systemen, dnf op Red Hat-gebaseerde systemen enzovoort)?
  4. Wat is op een Linux-systeem met systemd het verschil tussen „systemctl start license.service” en „systemctl enable license.service” voor de service license.service?
  5. De regel „30 2 * * 1 /home/alice/backup.sh” is in cron ingesteld. Wanneer wordt backup.sh uitgevoerd?