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 commande cut 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