Outils pour utilisateurs

Outils du site


td_-_scripts_bash

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
td_-_scripts_bash [2019/01/17 15:44] gillestd_-_scripts_bash [2022/02/22 13:14] (Version actuelle) – [Q.12 - Vérification de chemin] gilles
Ligne 122: Ligne 122:
  
 <code bash> <code bash>
-   verif /home/lissence/toto+   ./check-path.sh /home/lissence/toto
    /home/lissence n\'existe pas    /home/lissence n\'existe pas
 </code> </code>
Ligne 152: Ligne 152:
 </code> </code>
  
-''$PATH'' contient l'ensemble des chemins du système dans lesquels les commandes sont directement accessibles par la ligne de commande. La séparation entre chaque chemin est faite par le caractère '':''. Ecrire un ''bash''-script qui admet en argument un liste de fichiers. Notre commande ''is-in-path.sh'' teste pour chacun de ses arguments son appartenant à l'un des dossiers dont le chemin absolu est présent dans la variable ''PATH''.+''$PATH'' contient l'ensemble des chemins du système dans lesquels les commandes sont directement accessibles par la ligne de commande. La séparation entre chaque chemin est faite par le caractère '':''. Ecrire un ''bash''-script qui admet en argument une liste de fichiers. Notre commande ''is-in-path.sh'' teste pour chacun de ses arguments son appartenance à l'un des dossiers dont le chemin absolu est présent dans la variable ''PATH''.
  
 ==== Q.17 - Endormir un processus ==== ==== Q.17 - Endormir un processus ====
Ligne 158: Ligne 158:
 Proposez un ''bash''-script qui attend et se met en veille jusqu'à la prochaine heure pleine. On n'appellera qu'une seule fois la commande ''date'', qui affiche les informations suivant le format : Proposez un ''bash''-script qui attend et se met en veille jusqu'à la prochaine heure pleine. On n'appellera qu'une seule fois la commande ''date'', qui affiche les informations suivant le format :
  
-\begin{verbatim}+<code>
 Jeu 17 jan 2019 16:40:08 CET Jeu 17 jan 2019 16:40:08 CET
-\end{verbatim}+</code>
  
 << Endormir >> le déroulement d'un script se fait à l'aide de la commande ''sleep'' qui admet en paramètre une valeur entière correspondant à un nombre de secondes (e.g ''sleep 10'' attendra 10 secondes). Dans le cas d'exemple ci-dessus, notre commande ''heure-pleine.sh'' devra se terminer vers ''17:00'' heures, soit 1192 secondes après l'appel à ''date'' (on néglige le temps d'exécution de quelques appels à des fonctions comme ''expr''). << Endormir >> le déroulement d'un script se fait à l'aide de la commande ''sleep'' qui admet en paramètre une valeur entière correspondant à un nombre de secondes (e.g ''sleep 10'' attendra 10 secondes). Dans le cas d'exemple ci-dessus, notre commande ''heure-pleine.sh'' devra se terminer vers ''17:00'' heures, soit 1192 secondes après l'appel à ''date'' (on néglige le temps d'exécution de quelques appels à des fonctions comme ''expr'').
  
-==== Q.18 -  +==== Q.18 - Récursivité ====
-\section{Commande {\tt clean}}+
  
-\'Ecrire une commande qui prend en argument le nom d'un r\'epertoire et qui efface tous les fichiers dont le nom se termine par le caract\`ere \verb+~+ contenus dans l'arborescence de ce r\'epertoire. Ne pas utiliser l'option \verb+-r+ de la commande \verb+rm+.+=== Q.18 a) LS ===
  
-\section{Commande {\tt cptvide}}+Sans utiliser ''ls'', proposez un ''bash''-script qui liste l'ensemble des fichiers contenus dans un dossier sui est passé en paramètre.
  
-\'Ecrire un filtre qui affiche le nombre de lignes vides du flux d'entr\'ee.  Une ligne vide est une ligne qui commence par un certain nombre \'eventuellement nul de blancs puis un retour \`a la ligne.+=== Q.18 b) LS récursif ===
  
-\section{Commande {\tt twice}}+Enrichissez la réponse précédente et proposez un ''bash''-script nommé '' my-ls.sh'' qui admet en paramètres des noms de dossiers (ce point sera vérifié) et qui liste tous les fichiers contenus dans l'arborescence enracinée à partir de chaque paramètre. Le nom de chaque fichier devra être précédé de son adressage absolu.
  
-\'Ecrire un filtre qui r\'ep\`ete deux fois chaque ligne de l'entr\'ee standard.+==== Q.19 - Nettoyage ====
  
-\section{Commande {\tt somtaille}}+A partir de la réponse faite à la question précédente, écrivez un ''bash''-script qui prend en argument des noms de dossiers et qui efface tous les fichiers dont le nom se termine par le caractère '''~''' contenus dans l'arborescence enracinée dans chaque dossier. il ne vous est pas autorisé d'utiliser l'option ''-r'' de la commande ''rm''.
  
-\'Ecrire une commande qui affiche la taille totale de tous les fichiers du r\'epertoire courantOn ne consid\`ere que les fichiers simples (pas les sous-r\'epertoires).+==== Q.20 Comptage ====
  
-\section{Commande {\tt repliq}}+Ecrire un filtre, nommé ''cptvide.sh'', qui affiche sur la sortie standard le nombre de lignes vides du flux d'entrée. On considère qu'une ligne vide est une ligne qui commence par un certain nombre éventuellement nul de blancs puis un retour à la ligne. Cet exercice fait appel à des premières notions relatives aux expressions régulières.
  
-\'Ecrire une commande qui affiche le nom des fichiers du r\'epertoire courant qui n'existent pas dans un des sous-r\'epertoires du r\'epertoire courant (on ne consid\'erera que les sous-r\'epertoires directs du r\'epertoire courant).+==== Q.21 Double écho ====
  
-\section{Commande {\tt bigger}}+Proposez un filtre qui répète deux fois chaque ligne de l'entrée standard.
  
-\'Ecrire une commande qui affiche les noms des fichiers du r\'epertoire courant qui ont une taille sup\'erieure ou \'egale au nombre pass\'e en argumentS'il n'y a pas d'argument, la taille minimale par d\'efaut est fix\'ee \`a 1024 octets. La commande \verb+ls -l+ (que vous n'\^etes pas oblig\'es d'utiliser) sort des informations sous le format :+==== Q.22 Taille d'un dossier ====
  
-\begin{verbatim} +La commande ''ls -l'' fournit la sortie standard suivante 
--rw-r--r--  1 lazure      2976 May 26 08:00 unix.interro +
-\end{verbatim}+
  
-\section{Commande {\tt mmv}}+<code bash> 
 +  % ls -l 
 +  total 8 
 +  drwxr-xr-x  2 gilles  staff  64 16 jan 08:49 dir1 
 +  drwxr-xr-x  2 gilles  staff  64 16 jan 08:56 dir2 
 +  drwxr-xr-x  3 gilles  staff  96 16 jan 08:57 dir3 
 +  -rw-r--r--@ 1 gilles  staff   8 16 jan 09:25 lien-p 
 +  lrwxr-xr-x  1 gilles  staff   5 16 jan 09:21 lien-s -> vide1 
 +  -rw-r--r--  1 gilles  staff   0 16 jan 08:48 toto 
 +</code>
  
-\'Ecrire une commande \og multi-move \fg{} qui permet de renommer une s\'erie de fichiers pass\'es en param\`etres. Le nombre de param\`etres sera toujours pair. +La taille de chaque entrée est spécifiée sur la cinquième colonne de cette sortie. Proposez un ''bash''-script qui affiche le cumul des tailles des entrées - fichiers et dossiers - pour chaque dossier passé en argument. On ne considère pas les sous--répertoires. 
 + 
 +==== Q.23 - Taille d'une branche ==== 
 + 
 +En partant de la question précédente et en vous inspirant des réponses faites pour les questions 18.b et 19, propsez un ''bash''-script qui affiche le cumul des tailles des branches - uniquement les fichiers - enracinées dans chaque dossier passé en paramètre. 
 + 
 +==== Q.24 - Recherche de singletons ==== 
 + 
 +Ecrire une commande qui affiche le nom des fichiers du répertoire courant qui n'existent pas dans un des sous-répertoires du répertoire courant (on ne considèrera que les sous-répertoires directs du répertoire courant). 
 + 
 +==== Q.25 - Qui sont les plus grands ? ==== 
 + 
 +Proposez un ''bash''-script qui affiche les noms des fichiers du répertoire courant qui ont une taille supérieure ou égale à un nombre passé en argument. S'il n'y a pas d'argument, la taille minimale par défaut est fixée à 1024 octets. Pour mémoire, la commande ''ls -l'' (que vous n'êtes pas obligés d'utiliser) renvoie des informations sous le format suivant : 
 + 
 +<code bash> 
 +  % ls -l 
 +  total 8 
 +  drwxr-xr-x  2 gilles  staff  64 16 jan 08:49 dir1 
 +  drwxr-xr-x  2 gilles  staff  64 16 jan 08:56 dir2 
 +  drwxr-xr-x  3 gilles  staff  96 16 jan 08:57 dir3 
 +  -rw-r--r--@ 1 gilles  staff   8 16 jan 09:25 lien-p 
 +  lrwxr-xr-x  1 gilles  staff   5 16 jan 09:21 lien-s -> vide1 
 +  -rw-r--r--  1 gilles  staff   0 16 jan 08:48 toto 
 +</code> 
 + 
 +==== Q.26 Multi move ==== 
 + 
 +Proposez une commande nommée ''mmv.sh'' qui permet de renommer une série de fichiers passés en paramètres. Le nombre de paramètres sera toujours pair.  
 + 
 +<code bash> 
 +  % ls 
 +  ex1.c  ex2.c ex3.c titi toto 
 +  % ./mmv.sh *.c *.c.bak 
 +  % ls 
 +  ex1.c.bak  ex2.c.bak ex3.c.bak titi toto 
 +  % mmv titi toto tutu tata 
 +  % ls 
 +  ex1.c.bak  ex2.c.bak ex3.c.bak tutu tata 
 +</code>
  
-Exemple: 
  
-\begin{verbatim} 
-%> ls 
-ex1.c  ex2.c ex3.c titi toto 
-%> mmv *.c *.c.bak 
-%> ls 
-ex1.c.bak  ex2.c.bak ex3.c.bak titi toto 
-%> mmv titi toto tutu tata 
-%> ls 
-ex1.c.bak  ex2.c.bak ex3.c.bak tutu tata 
-\end{verbatim} 
td_-_scripts_bash.1547739898.txt.gz · Dernière modification : 2019/01/17 15:44 de gilles