Bases de Linux et de la ligne de commande

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

Quels fichiers se trouvent dans le répertoire après la session ci-dessus ?

  1. Aa.log.txt, b.log.txt, notes.txt
  2. BToujours a.log, b.log, notes.txt, mais la chaîne « .log » contenue dans a.log et b.log est remplacée par « .txt »
  3. Ca.txt, b.txt, notes.txt
Afficher la réponse et l'explication

Réponse : C. a.txt, b.txt, notes.txt

for f in *.log place tour à tour dans la variable f les fichiers a.log et b.log, qui correspondent à *.log, et répète la partie située entre do et done. ${f%.log} est la valeur de f privée du .log final : pour a.log, c'est a, et mv "$f" "${f%.log}.txt" renomme a.log en a.txt. notes.txt ne correspond pas à *.log et reste tel quel. "$f" est placé entre guillemets doubles pour qu'un nom contenant des espaces soit transmis à mv comme un seul argument.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de Linux et de la ligne de commande

  1. Le script exécutable run.sh, situé dans le répertoire courant, donne « command not found » quand on le lance en tapant « run.sh », mais s'exécute quand on tape « ./run.sh ». Quelle en est la raison ?
  2. Si l'on exécute dans l'ordre les commandes ci-dessus, quelle est la combinaison des sorties des deux commandes bash -c ?
  3. Quelle est la fonction principale d'un système de gestion de paquets de Linux (apt sur les systèmes dérivés de Debian, dnf sur les systèmes dérivés de Red Hat, etc.) ?
  4. Sur un système Linux qui utilise systemd, quelle est la différence entre « systemctl start license.service » et « systemctl enable license.service » pour le service license.service ?
  5. La ligne « 30 2 * * 1 /home/alice/backup.sh » a été enregistrée dans cron. Quand backup.sh est-il exécuté ?