Grundlagen von Linux und der Kommandozeile

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

Welche Dateien liegen nach der obigen Sitzung im Verzeichnis?

  1. Aa.log.txt, b.log.txt, notes.txt
  2. BWeiterhin a.log, b.log, notes.txt, wobei die Zeichenkette „.log“ in a.log und b.log durch „.txt“ ersetzt ist
  3. Ca.txt, b.txt, notes.txt
Antwort und Erläuterung anzeigen

Antwort: C. a.txt, b.txt, notes.txt

for f in *.log legt die zu *.log passenden Dateien a.log und b.log nacheinander in die Variable f und wiederholt den Teil zwischen do und done. ${f%.log} ist der Wert von f ohne das .log am Ende, für a.log also a, und mv "$f" "${f%.log}.txt" benennt a.log in a.txt um. notes.txt passt nicht auf *.log und bleibt unverändert. "$f" steht in doppelten Anführungszeichen, damit ein Name mit Leerzeichen als ein einziges Argument an mv übergeben wird.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Ein ausführbares Skript run.sh im aktuellen Verzeichnis ergibt bei Eingabe von „run.sh“ die Meldung „command not found“, lässt sich aber durch Eingabe von „./run.sh“ ausführen. Was ist der Grund?
  2. Welche Kombination der Ausgaben der beiden bash -c-Befehle ergibt sich, wenn die obigen Befehle nacheinander ausgeführt werden?
  3. Was ist die Hauptaufgabe eines Paketverwaltungssystems unter Linux (apt bei Debian-basierten Systemen, dnf bei Red-Hat-basierten Systemen usw.)?
  4. Was ist auf einem Linux-System mit systemd der Unterschied zwischen „systemctl start license.service“ und „systemctl enable license.service“ für den Dienst license.service?
  5. In cron wurde „30 2 * * 1 /home/alice/backup.sh“ eingetragen. Wann wird backup.sh ausgeführt?