Newer
Older
cours-unix-shell / output / commandes / tp.html
<!DOCTYPE html>
<html>

<head>
    <title></title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <header>
        <h1></h1>
        <nav>
            <ul>
                <li><a href="/output/README.html">Accueil</a></li>
                <li><a href="/output/unix/README.html">UNIX</a></li>
                <li><a href="/output/bases/README.html">Bases</a></li>
                <li><a href="/output/commandes/README.html">Commandes</a></li>
                <li><a href="/output/shell/README.html">Shell</a></li>
                <li><a href="/output/sed/README.html">Sed</a></li>
                <li><a href="/output/make/README.html">Make</a></li>
            </ul>
        </nav>
    </header>

    <div class="content">
        <h1 id="travaux-pratiques-autres-commandes-unix">Travaux pratiques (autres commandes UNIX)</h1>
        <p>Cette seconde série de travaux pratiques se décompose en 4 parties :</p>
        <ol type="1">
        <li>commandes utilisateurs,</li>
        <li>gestion des droits,</li>
        <li>archivage et décompression,</li>
        <li>gestion des processus.</li>
        </ol>
        <h2 id="commandes-utilisateurs">Commandes utilisateurs</h2>
        <p>Identifiez-vous : quels sont votre <em>user id</em> (<code>uid</code>) et votre groupe (<code>gid</code>) ?</p>
        <p><details> <summary>Voir la solution</summary></p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">whoami</span>
        [<span class="ex">votre</span> username]
        $ <span class="fu">id</span>
        <span class="va">uid=</span>[<span class="ex">votre</span> username] gid=users</code></pre></div>
        <p></details></p>
        <h2 id="gestion-des-droits">Gestion des droits</h2>
        <ul>
        <li><p>En restant dans votre répertoire de travail (UnixShell), listez complètement le contenu de votre home directory.<br />
        Décrivez ce que vous y trouvez :</p>
        <p><details> <summary>Voir la solution</summary></p>
        <p>UnixShell est à 2 nveaux sous votre <em>home directory</em>:</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="ex">ll</span> ../..</code></pre></div>
        <p></details></p></li>
        <li><p>quels sont les fichiers et répertoires présents ?</p>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Des répertoires comme : <code>./ ../ Formation/</code><br />
        Des fichiers comme : <code>.profile</code></p>
        <p></details></p></li>
        <li><p>lesquels sont cachés ?</p>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Tous ceux qui commencent par un point comme <code>.profile</code></p>
        <p></details></p></li>
        <li><p>quels sont leurs propriétaires et groupes attachés ?</p>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Propriétaires : surtout vous, éventuellement l'utilisateur <code>root</code><br />
        Groupes : le vôtre, éventuellement d'autres</p>
        <p></details></p></li>
        <li><p>quels sont les droits afférants ?</p>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Possiblement variable, mais dépendant surtout de votre <code>umask</code> (voir la suite)</p>
        <p></details></p></li>
        <li><p>Copiez dans votre répertoire <code>UnixShell</code> le fichier <a href="../UnixShell_cours2018/testUmask.txt"><code>testUmask.txt</code></a> (par un clic droit sur ce lien puis &quot;Enregistrez la cible du lien sous&quot; ou &quot;Save link as&quot;).<br />
        Ses droits initiaux sont <code>rwxrwxr-x</code>.<br />
        Quel est votre <code>umask</code> ?</p></li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Dépend de votre configuration, mais s'observe en faisant un <code>ll</code> pour afficher les droits pris par le fichier <code>testUmask.txt</code> lors de la copie sous votre compte.<br />
        En prenant pour exemple les droits présentés plus haut : <code>rwxrwxr-x</code></p>
        <p><code>txt   user (u)  : rwx, binaire 111 octal 7   group (g) : rwx, binaire 111 octal 7   other (o) : r-x, binaire 101 octal 5</code></p>
        <p>Donc profil octal 775, d'où un <code>umask</code> de 002 (sa négation en octal).<br />
        On peut aussi lancer <code>umask</code> comme commande en ligne... </details></p>
        <ul>
        <li><p>Modifiez les droits de ce fichier <code>testUmask.txt</code> de deux façons pour obtenir ceux qui suivent, en séquence pour les trois cas de proche en proche :</p></li>
        <li><code>rwx------</code></li>
        <li><code>rwxrwxrwx</code></li>
        <li><p><code>rwxr-xr--</code></p></li>
        </ul>
        <p>La première façon de procéder utilisera un profil octal, la seconde des lettres. Contrôlez vos actions à chaque étape.</p>
        <p><details> <summary>Voir la solution</summary></p>
        <ul>
        <li><p><code>rwx------</code></p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">chmod</span> 700 testUmask.txt
        $ <span class="fu">chmod</span> go-rwx testUmask.txt
        $ <span class="ex">ll</span>
        <span class="ex">-rwx------</span> 1 [uid] users 36 May 5 13:04 testUmask.txt</code></pre></div></li>
        <li><p><code>rwxrwxrwx</code></p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">chmod</span> 777 testUmask.txt
        $ <span class="fu">chmod</span> a+rwx testUmask.txt
        $ <span class="ex">ll</span>
        <span class="ex">-rwxrwxrwx</span> 1 [uid] users 36 May 5 13:05 testUmask.txt</code></pre></div></li>
        <li><p><code>rwxr-xr--</code></p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="fu">chmod</span> 754 testUmask.txt
        $ <span class="fu">chmod</span> go-w,o-x testUmask.txt
        $ <span class="ex">ll</span>
        <span class="ex">-rwxr-xr--</span> 1 [uid] users 36 May 5 13:06 testUmask.txt</code></pre></div></li>
        </ul>
        <p></details></p>
        <ul>
        <li>Cherchez le chemin où se trouve votre fichier .profile, à partir de votre home directory, sans changer de répertoire.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   find ~ -name .profile</code></p>
        <p></details></p>
        <ul>
        <li>Copiez dans votre répertoire <code>UnixShell</code> le fichier <a href="../UnixShell_cours2018/testDiff1.txt"><code>testDiff1.txt</code></a> (par un clic droit sur ce lien).<br />
        Ouvrez-le dans un éditeur et modifiez-le selon les consignes qui s'y trouvent.<br />
        Ensuite, sauvegardez-le comme <code>testDiff2.txt</code>.<br />
        Comparez les deux fichiers, analysez le rapport obtenu en fonction de vos actions.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   $ diff testDiff1.txt testDiff2.txt   3a4   &gt; LIGNE AJOUTEE   6d6   &lt; LIGNE A SUPPRIMER   9c9   &lt; Modifiez-moi !!!   ---   &gt; Modifiée</code></p>
        <p></details></p>
        <h2 id="archivage-et-compression">Archivage et compression</h2>
        <ul>
        <li>Archivez en un seul <em>tarfile</em> tout le contenu de votre répertoire <code>UnixShell</code> (placez-vous au-dessus).<br />
        Contrôlez le fichier <code>.tar</code> résultat.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p>Le plus simple est d'abord de vous déplacer dans le répertoire parent de <code>UnixShell</code> pour l'archiver :</p>
        <p><code>bash   $ cd ..   $ pwd   / ... /Formation   $ ll   drwxrwxr-x  4 [uid] [gid]  1024 Apr  5 13:15 ./   drwxrwxr-x 16 [uid] [gid]   512 Apr 25 16:35 ../   drwxrwxr-x  4 [uid] [gid]  1024 Apr 25 10:03 UnixShell</code></p>
        <p><code>bash   $ tar -cvf Archives.tar UnixShell   $ ll   drwxrwxr-x  4 [uid] [gid]  1024 Apr  5 13:15 ./   drwxrwxr-x 16 [uid] [gid]   512 Apr 25 16:35 ../   drwxrwxr-x  4 [uid] [gid]  1024 Apr 25 10:03 UnixShell   -rwxrwxr-x  1 [uid] [gid] 10240 May  5 14:23 Archives.tar</code></p>
        <p></details></p>
        <ul>
        <li>Créez le sous-répertoire <code>tarzip</code> (sous <code>UnixShell</code> où vous revenez) et déplacez-y votre <em>tarfile</em>.<br />
        Sans vous déplacer dans ce sous-répertoire, désarchivez le <em>tarfile</em> et contrôlez le résultat.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   $ cd UnixShell   $ pwd   / ... /Formation/UnixShell</code></p>
        <p><code>bash   $ mkdir tarzip   $ mv ../Archives.tar tarzip</code></p>
        <p><code>bash   $ tar -xvf tarzip/Archives.tar   UnixShell/   UnixShell/monHistorique.txt   UnixShell/testDiff1.txt   UnixShell/testDiff2.txt</code></p>
        <p><code>bash   $ ll   drwxrwxr-x 4 [uid] [gid]   512 May  5 15:25 ./   drwxrwxr-x 4 [uid] [gid]  1024 Apr 25 10:03 ../   drwxrwxr-x 4 [uid] [gid]  1024 May  5 14:23 UnixShell/   -rwxrwxr-x 1 [uid] [gid]   212 May  5 10:10 monHistorique.txt   drwxrwxr-x 2 [uid] [gid]   512 May  5 15:18 tarzip/   -rwxrwxr-x 1 [uid] [gid]   261 May  5 14:12 testDiff1.txt   -rwxrwxr-x 1 [uid] [gid]   249 May  5 14:13 testDiff2.txt</code></p>
        <p>Si vous avez travaillé comme cela, vous devez constater que le répertoire <code>UnixShell</code> s'est désarchivé sous lui-même...<br />
        C'est bien sûr un exemple se voulant surtout didactique.<br />
        Dans une situation plus concrète, le désarchivage doit s'opérer aux endroits les plus adéquats ! </details></p>
        <ul>
        <li>Toujours en restant sous <code>UnixShell</code>, compressez le <em>tarfile</em> en <code>.gz</code>.<br />
        Affichez ensuite les informations relatives aux tailles de fichiers et au ratio de compression.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   $ gzip tarzip/Archives.tar   $ ll tarzip   -rwxrwxr-x  1 [uid] [gid] 612 May   5 16:23 Archives.tar.gz</code></p>
        <p><code>bash   $ gzip -l tarzip/Archives.tar.gz   compressed uncompr. ratio uncompressed_name   612        10240    94.3% tarzip/Archives.tar</code></p>
        <p></details></p>
        <ul>
        <li>Toujours en restant sous <code>UnixShell</code>, décompressez le <code>tarfile.gz</code> sur le disque.<br />
        Puis vérifiez le résultat en listing complet.<br />
        Recompressez le <em>tarfile</em> et contrôlez de nouveau.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   $ gunzip tarzip/Archives.tar   $ ll tarzip   -rwxrwxr-x  1 [uid] [gid] 10240 May   5 14:23 Archives.tar</code></p>
        <p><code>bash   $ gzip tarzip/Archives.tar   -rwxrwxr-x  1 [uid] [gid] 612 May   5 16:48 Archives.tar.gz</code></p>
        <p></details></p>
        <ul>
        <li>Toujours en restant sous <code>UnixShell</code>, et sans décompresser le <code>tarfile.gz</code> sur le disque, comptez le nombre de lignes non compressées qu'il renferme.</li>
        </ul>
        <p><details> <summary>Voir la solution</summary></p>
        <p><code>bash   $ gunzip -c tarzip/Archives.tar | wc -l</code></p>
        <p></details></p>
        <p><a href="./processus.html">Précédent</a> - <a href="../shell/README.html">Suivant</a></p>
    </div>

    <footer>
        <p>&copy; CNRS 2023</p>
    </footer>
</body>

</html>