<!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 "Enregistrez la cible du lien sous" ou "Save link as").<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 > LIGNE AJOUTEE 6d6 < LIGNE A SUPPRIMER 9c9 < Modifiez-moi !!! --- > 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>© CNRS 2023</p>
</footer>
</body>
</html>