Partie 1
Commandes Unix élémentaires
Exercice n°1
1. Créez un fichier 'premiertexte' contenant une ou deux phrases.
2. Visualisez le contenu de 'premiertexte' sans l'éditer.
3. Quelle est la taille de 'premiertexte' ?
4. Editez 'PREMIERTEXTE'. Que constatez-vous ?
Le fichier 'PREMIERTEXTE' n'existe pas, attention à respecter la casse!
Exercice n°2
1. Faites une copie de 'premiertexte' appelée 'double'.
2. Comparez leur taille.
3. Renommez 'double' en 'introduction'.
4. Quel différence y a-t-il entre "mv double introduction" et "cp double introduction" ?
cp double introduction =copie le fichier/répertoire vers un autre fichier/répertoire
mv double introduction déplace (couper-coller) le contenu de double.txt vers introduction.txt et supprime le fichier d'origine. Renomme au final.
Exercice n°3
1. Créez un répertoire 'essai/'.
2. Déplacez 'introduction' dans 'essai/'.
3. Faites une copie de 'premiertexte' appelée 'copie', et placez-la également dans 'essai/'.
4. Affichez une liste de ce que contient 'essai/'.
Exercice n°4
1. Essayez de détruire 'essai/'. Que se passe-t-il ?Que faut-il faire pour détruire un répertoire ?
On ne peut pas supprimer un répertoire contenant des fichiers. Il faut donc supprimer les fichiers contenus dans le répertoire avant.
2. Détruisez tout ce que contient 'essai/'.
3. Détruisez 'essai/'.
Exercices sur ls
1. Affichez le contenu de /usr/local/.
2. Quelle est la taille de votre .bashrc ?
3. À quoi sert l'option -R de ls ?
-R affiche l'arborescence de tous les répertoires d'où on se trouve, leur contenu.
4. Dans quel ordre les fichiers et répertoires sont-ils classés par défaut? Quelles sont les options qui peuvent servir à modifier ce critère de classement ? Indice : «trier» se dit to sort en anglais.
Les fichiers et répertoires sont classés par défaut par ordre alphabétique, et en premier les fichiers ou répertoires cachés.
-r inverse l'ordre alphabétique
-S trie les fichiers/répertoires par taille, dans l'ordre décroissant
-t trie par date de modification
-X trie par ordre alphabétique mais les documents non-cachés en premier, et les fichiers cachés ne sont pas dans l'ordre alphabétique.
On peut se servir de l'option --sort avec... none (-U), size (-S), time (-t), version (-V), extension (-X)
Ex: "ls -l --sort time" OU "ls -l -t"
5. Affichez le contenu de votre répertoire courant de telle sorte que les fichiers modifiés récemment apparaissent en premier.
6. Quels sont les droits de votre répertoire Mail ?Qu'est-ce que cela signifie ?
Le propriétaire du répertoire Mail peut ouvrir la liste de ce répertoire, créer des fichiers dedans et l'éxecuter. Le groupe du propriétaire n'a aucun droit sur le répertoire Mail et les autres utilisateurs peuvent lire et exécuter le répertoire.
7. Décrivez le résultat de la commande ls -l.
La commande " ls -l " affiche une liste des fichiers et répertoires présents sous le répertoire où l'on se situe.
Chaque ligne représente un fichier/répertoire, reconnaissable par une suite de codes dans la 1ère colonne car "-" signifie fichier et "d" signifie répertoire. On voit aussi la taille du fichier/répertoire, la date de consultation/modification (jour-mois) avec l'heure et enfin le nom.
8. Comment afficher les droits d'un répertoire donné?
Il suffit d'utiliser la commande "ls -l" puis le nom du répertoire ou du fichier qui affiche dans la 1ère colonne les droits de tous(propriétaire, groupe et autres utilisateurs).
9. Votre ls vous affiche le contenu de votre répertoire avec des signes distinctifs qui permettent d'identifier plus vite le type de fichiers (slash / pour les répertoires, arobase @ pour les liens, etc). Quelle est l'option qui ajoute ces caratères ?
10. Un répertoire a les droits suivants :drwx--x--x. Je ne suis pas propriétaire, puis-je afficher le contenu du répertoire?
Si je ne suis pas propriétaire, je ne peux pas afficher le contenu du répertoire d'après les droits écrits.
Exercices sur les répertoires
mkdir et rmdir
1. Créez trois répertoires en une seule ligne de commande.
2. Effacez ces trois répertoires en une seule ligne de commande.
3. Que se passe-t-il si vous tapez "mkdir mkdir"?
4. Vous voulez détruire un répertoire bla/, dont ls vous dit qu'il est vide. Cependant, quand vous tapez "rmdir bla", la machine vous répond: "rmdir: bla: Directory not empty". Que faut-il faire?
Si la machine répond "rmdir: bla: Directory not empty" lorsqu'on veut supprimer un répertoire, c'est qu'il y a en effet des éléments existants dans ce répertoire mais ils sont cachés, il faut donc afficher les fichiers cachés par l'option "-a" et supprimer avant de supprimer le répertoire.
5. Est-ce que mkdir peut prendre des options ?
6. À quelle condition est-ce que la ligne de commande "mkdir Rapport/annexes" peut fonctionner et créer effectivement ce sous-répertoire ?
La ligne de commande "mkdir Rapport/annexes" peut fonctionner si le répertoire Rapport existe déjà.
7. Y-a-t-il une option de mkdir qui permette de créer à la fois un répertoire et un sous-répertoire de ce répertoire ?
Il faut faire appel à l'option -p qui permet de créer un répertoire et son sous-répertoire.
8. Comment créer un répertoire en spécifiant des droits ?
Il faut utiliser l'option -m (mode) de la commande mkdir.
9. Quel est l'effet de la commande suivante : "rmdir -p toto/tata/tutu/"?
Cela n'a aucun effet car ces répertoires sont inexistants, et on ne peut pas supprimer des répertoires inexistants. Si cette suite de répertoire existait, ils seraient effacés à condition qu'ils soient vides. Si un des répertoires ne l'est pas, la suppression prend fin et les répertoires parents ne sont également pas supprimés.
10. Vous voulez créer à la fois un répertoire toto/ et un sous répertoire tutu/ dans toto/. Quelle option faut-il utiliser pour que :
-Si toto/ n'existe pas, le répertoire et son sous-répertoire soient créés
Si toto/ existe déjà, le sous-répertoire tutu/ soit créé, sans message d'erreur.
cd
Il faut créer l'arborescence suivante...
1. Dans quel répertoire vous trouvez-vous quand vous vous connectez ?
2. Créér cette arborescence dans votre répertoire de travail.
3.Allez directement dans ~/Rapport/docs/afaire/.
4. De là, passez dans ~/Rapport/docs/fait/.
5. Revenez dans ~/Rapport/.
6. Sans changer de répertoire, regardez avec less le contenu de ~/www/index.html.
7. Passez dans ~/Rapport/docs/.
8. En restant là où vous êtes, affichez les droits de ~/Mail/
9. Revenez dans votre répertoire principal.
ou
Exercices sur cp et mv
cp
1. Est-il possible de faire une copie d'un répertoire et de l'ensemble de ses sous-répertoires en une seule ligne de commande, sans d'abord faire une copie de chacun des fichiers l'un après l'autre ?
2. Que se passe-t-il si l'on veut faire une copie appelée tentative/ de son répertoire essai/, et que le répertoire tentative/ existe déjà ?
Si le répertoire de copie existe déjà, la commande va comprendre qu'il faut envoyer le répertoire source DANS le répertoire de destination nommé.
3. Que se passe-t-il si vous voulez faire une copie d'un fichier dans un répertoire où il existe déjà un fichier de ce nom ?
Le contenu du fichier existant va être supprimé et remplacé par le contenu du fichier copié.
4. Est-il possible de taper une ligne du genre de : "cp fichier1 fichier2 fichier3 repertoire/"? Quel est l'effet de cette ligne ?
Cette ligne de commande copie l'ensemble des fichiers nommés dans le répertoire existant écrit.
mv
1. La syntaxe de mv est mv fichier1 fichier2; fichier1 est renommé en fichier2. Mais que se passe-t-il si fichier2 existe déjà ?
Si fichier2 n'existe pas, fichier1 va se renommer fichier2.
Si Fichier2 existe déjà, le contenu de Fichier1 se déplace dans Fichier2 en écrasant ce qu'il y avait dans Fichier2.
2. Supposez que vous avez chez vous l'arborescence précédente, et que vous vous trouvez dans ~/Rapport/docs/.
Comment faites-vous pour y amener Rapport.tex qui se trouve dans le répertoire père ?
Comment faites-vous ensuite pour ramener ce fichier à son emplacement d'origine ?
Note: Il faut réécrire le même nom pour le fichier cible si on doit garder le même.
3. Comment renommer un répertoire bla en blo ? Que se passe-t-il si le répertoire blo existe déjà ?
Si blo existe déjà, le répertoire bla et tout son contenu vont se déplacer dans le répertoire blo.
4. Comment faire pour à la fois déplacer un fichier et changer son nom ? Que se passe-t-il si il existe déjà un fichier de ce nom dans le répertoire d'arrivée ?
S'il existe déjà un fichier de ce nom dans le répertoire d'arriver, le nom du fichier déjà existant reste inchangé mais son contenu est remplacé par celui du fichier qui est déplacé. Le fichier déplacé n'est plus dans le répertoire parent.
5. Mêmes questions avec un répertoire.
Comme pour le fichier, tout répertoire et son contenu vont dans le répertoire choisi et on le renomme en même temps.
Si le répertoire d'arrivée en désigne un déjà existant, le répertoire source à déplacer va aller DANS ce répertoire cible qu'il considère du coup comme répertoire parent.
6. Que se passe-t-il si on lance mv avec les options -i et -f ensemble ?
L'option -i demande confirmation avant d'écraser un fichier contrairement à -f qui supprime directement sans autorisation préalable.
Mis ensemble, c'est la dernière option qui l'emporte.
mv -f -i fichier1.txt fichier2.txt OU mv -fi f1.txt f2.txt -->demande préalable
Exercices sur grep
Les options de grep
1. Quelles sont les options de grep qui permettent d'obtenir des lignes de contexte (qui précèdent et/ou suivent la ligne où figure le mot) ?
2. Comment faire apparaître le numéro de la ligne où figure le mot recherché ? Que se passe-t-il quand on demande également des lignes de contexte ?
L'option -n fait apparaître le numéro de la ligne où figure le mot cherché et son contenu.
Lorsqu'on demande des lignes de contexte, ce qui suit le numéro de la ligne est un tiret "-" pour un contexte précédent/suivant contrairement à la ligne où le mot apparaît, car c'est alors noté par ":".
3. Comment faire pour afficher le nombre d'occurences du mot recherché ?
4. Comment faire pour que grep ignore la casse des caractères (différence entre majuscules et minuscules) dans sa recherche ?
5. Comment faire pour faire apparaître non pas les lignes où figurent le mot, mais les noms des fichiers ?
6. Comment faire apparaître les lignes où ne figurent pas le mot recherché ?
7. Comment faire apparaître les noms des fichiers ne contenant pas le mot recherché ?
8. Comment faire pour que grep ne recherche que les lignes où figure le mot tel quel, et non pas ses variantes ? Par exemple : on cherche le mot «travail», mais pas «travailleur» ou «travailler».
9. Comment faire pour chercher plusieurs mots à la fois en faisant apparaître les numéros des lignes ?
Il faut respecter une structure précise pour chercher plusieurs mots à la fois en faisant apparaître les numéros des lignes, qui est: egrep -n '\(mot1\|mot2\)' fichier.txt
Introduction aux expressions régulières
Les options de grep
1. Chercher toutes les lignes commençant par «a» ou «A».
2. Chercher toutes les lignes finissant par «rs».
3. Chercher toutes les lignes contenant au moins un chiffre.
4. Chercher toutes les lignes commençant par une majuscule.
5. Chercher toutes les lignes commençant par «B», «E» ou «Q».
6. Chercher toutes les lignes finissant par un point d'exclamation.
7. Chercher toutes les lignes ne finissant pas par un signe de ponctuation (point, virgule, point-virgule, deux-points, point d'interrogation, point d'exclamation).
8. Chercher tous les mots contenant un «r» précédé de n'importe quelle lettre majuscule ou minuscule.
Nous allons utiliser la fonction egrep plutôt que grep qui est une version étendue (extended grep) et donc plus moderne et élaborée concernant les expressions régulières.
Ne pas oublier d'entourer l'expression régulière des apostrophes.
On cherche le mot et non pas la ligne de contexte, d'où l'option -o
Il faut signaler le début de chaînes (le mot) par "\b".
Pour indiquer la classe des caractères acceptés avant le "r" en comptant majuscule et/ou minuscule, il faut écrire "[a-zA-Z]".
Problème!! En mettant cela, les caractères précédents le "r" accentués ne sont pas comptés. Il faut donc remplacer cette suite par "\w" qui indique n'importe quel caractère de mot. Le mot "élargi" est cette fois compté.
On signale qu'il y a au moins un de ces caractères par "+".
On ajoute le "r".
Et on termine en indiquant que la suite du mot peut se composer de n'importe quel caractère de mot par \w mais vu que c'est une possibilité on met à la fin * (de 0 à l'infini) car le mot peut se terminer par le "r".
On peut ou non indiquer ensuite que c'est la fin du mot par "\b".
Enfin, barre d'espacement+fichier.txt