Introduction au système Unix
Compétences visées
- commandes de base d’Unix
- compréhension du système de fichiers, propriétaires, groupes, droits
- maitrise de base de vim
- compréhension des flux et des redirections
- gestion des processus
- utilisation du système de paquetages, installation de logiciels
- sauvegardes
- scripting en Python
Usage minimal d’Unix
Activités à réaliser
- installer git, vim, gimp
- installer vscode
Activités à réaliser
1- Créez l’arborescence suivante, qui modélise les bâtiments et les salles d’enseignement de l’N7 :
- les 3 bâtiments d’enseignement sont représentés par 3 répertoires portant les noms Bat_A, Bat_B, et Bat_C.
- les 3 étages de chaque bâtiment sont représentés par 3 répertoires portant les noms Etage_1, Etage_2, et Etage_3.
- Chaque étage comporte 6 salles (répertoires) portant les noms Salle_01, Salle_02 , Salle_03, etc.
Essayez de construire cette arborescence en utilisant un minimum de lignes de commandes.
2- Dans votre répertoire courant, créez en une commande les fichiers suivants : annee1 Annee2 annee4 annee45 annee41 annee510 annee_saucisse banane
- Dans le répertoire courant, lister tous les fichiers
- se terminant par 5
- commençant par annee4
- commençant par annee puis avec aucun chiffre
- contenant la chaîne ana
- commençant par a ou A
- Copier les fichiers dont l’avant dernier caractère est un 4 ou 1 dans le répertoire /tmp en une seule commande.
Activités à réaliser
$ vimtutor
Activités à réaliser
- créer en une commande un fichier texte contenant les caractères “éèù”
- vérifier son encodage
- afficher le contenu hexadécimal du fichier
- convertir le fichier en encodage ISO-8859-1 (iso-latin-1)
Activités à réaliser
- Créer un nouveau compte utilisateur de nom ‘test’, groupe ‘test’
- Donner les droits sudo à cet utilisateur
- Afficher la liste des noms de tous les utilisateurs du système, par ordre alphabétique
- Supprimer le compte ‘test’ ainsi que son répertoire home
Activités à réaliser
Sauvegarder tous les fichiers modifiés (depuis la dernière sauvegarde) du répertoire courant vers le serveur distant (sur votre compte)
Activités à réaliser
- copier dans un fichier
germinal.txt
le texte UTF8 de Germinal situé à l’url :http://www.gutenberg.org/cache/epub/5711/pg5711.txt
- aspirer tout le contenu du site
https://wiki.formation-fullstack.fr
Activités à réaliser
- créez des clés ssh personnelles, vérifiez que vous n’avez plus besoin de mot de passe pour vous authentifier
- examinez le contenu de
~/.ssh
- faites en sorte que la connexion à votre compte distant utilise les mêmes clés et se fasse sans taper de mot de passe
Activités à réaliser
- modifier le prompt de son terminal :
"<username>@<hostname>:<path> $ "
Activités à réaliser
- faire qu’au lancement de vim, les numéros de lignes s’affichent et que la touche ‘tab’ provoque une indentation de 4 caractères
Activités à réaliser
- Chercher toutes les lignes de Germinal commençant par «a» ou «A».
- Chercher toutes les lignes de Germinal finissant par «rs»
- Chercher toutes les lignes de Germinal contenant le mot “le”
- Chercher toutes les lignes de Germinal contenant au moins un chiffre
- Chercher toutes les lignes de Germinal contenant au moins deux chiffres > (pas nécessairement consécutifs)
- Chercher toutes les lignes de Germinal commençant par une majuscule
- Chercher toutes les lignes de Germinal contenant le mot “qui” ou le mot “leur”
- Chercher toutes les lignes de Germinal contenant à la fois le mot “qui” et le mot “leur”
- Repérer les lignes contenant une date écrite JJ/MM/AA ou JJ/MM/AAAA
Activités à réaliser
- Afficher tous les chemins d’accès relatifs des fichiers et répertoires de l’arborescence
wiki.formation-fullstack.fr
- Afficher les chemins d’accès relatifs de tous les répertoires de l’arborescence
wiki.jcbuisson.dev
- Trouver dans l’arborescence
wiki.formation-fullstack.fr
les fichiers d’extension “.pdf”. - Trouver dans votre répertoire home tous les fichiers dont le nom commence par X ou x.
- Trouver dans l’arborescence
wiki.formation-fullstack.fr
les fichiers dont le nom contient un chiffre. - Trouver dans /usr/bin les fichiers dont la taille dépasse 1Mo et dont les droits sont fixés à 755 (-rwxr-xr-x).
- Trouver dans ‘/’ les fichiers appartenant à ‘root’ et ayant les droits fixés à 666 (-rw-rw-rw-). > Rediriger les erreurs vers /dev/null.
- Trouver tous les fichiers ‘core’ à partir de
/
et les supprimer après confirmation. > Rediriger les erreurs vers /dev/null. - Trouver toutes les images jpg des fichiers de l’archive et les convertir en .png (voir commande
convert
)
Activités à réaliser
- Ouvrir un fichier avec vim dans un autre terminal
- Identifier le processus associé à l’exécution de vim
- Tuer ce processus
Activité à réaliser
Écrire un script python (quelconque, avec ou sans arguments) et le déployer en tant que commande ‘system-wide’ sur le serveur dufullstack.fr
Activités à réaliser
- Créer une archive tar de tous les fichiers du wiki
- Afficher la liste de tous les fichiers contenus dans cette archive
- Décompresser l’archive tar dans un autre répertoire
- Créer une archive tar compressée de tous les fichiers de l’archive
Activités à réaliser
Créer un script shell qui enchaîne toutes les opérations indiquées à la rubrique tar
.
Activités à réaliser
Créer un service appelé ‘python-http’ qui exécute le module Python 3 http.server
sur le port 8888 à partir du répertoire /var/www
Activités à réaliser
Effectuer toutes les heures une sauvegarde de tous les fichiers modifiés de votre répertoire home local, vers le serveur myname.dufullstack.fr
Mini-projet Unix / SQL
- télécharger la dernière version de la table alimentaire Ciqual sous forme d’un fichier Excel
- convertir le fichier Excel en un fichier CSV
- à l’aide de
vim
, de la commandecut
ou de tout autre outil GNU/Unix, transformer ce fichier en un dump SQL pour Postgres ou Sqlite- créer la base de données à partir de ce dump
- trouver la commande SQL qui permet de produire la liste des 10 produits laitiers les plus riches en calcium
La base de données devra comporter les tables suivantes :
Nutrient id: int (autoincrement) name string Food id: string name: string grp_id: string Grp id: string name: string NutData id: int (auto) food_id: string nutrient_id: int value: string