Copy of https://perso.isima.fr/loic/unixc/tpunix02.php
tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
Institut d'informatique ISIMA
  • twitter
  • linkedin
  • viadeo

[UNIX] TP 2

 Cette page commence à dater. Son contenu n'est peut-être plus à jour. Contactez-moi si c'est le cas!

Date de première publication : 2014/09/09

Cette séance de TP se concentre sur les droits, les liens et les redirections. On commence également notre tournée des commandes sympas comme find.

Droits

Pour connaître les droits sur des fichiers ou des répertoires, il suffit de les lister avec l'option -l. Voici ce que cela donne sur mon compte avec ls -al pour afficher également les fichiers cachés :


total 26688
drwx--x--x   38 loyon  personnel_isima_limos       4096 28 oct.   2022 .
drwxr-xr-x 4449 nobody 4294967294                135168 11 sept. 03:15 ..
-rw-------    1 loyon  utilisateurs du domaine     5366 28 oct.   2022 .bash_history
-rw-------    1 loyon  personnel_isima_limos        193 23 oct.   2018 .bash_profile
-rw-------    1 loyon  personnel_isima_limos        231 23 oct.   2018 .bashrc
drwx------    2 loyon  personnel_isima_limos       4096 17 sept.  2019 Bureau
lrwxrwxrwx    1 loyon  utilisateurs du domaine       25 22 juil.  2020 shared -> /mnt/local.isima.fr/loyon
-rw-r--r--    1 loyon  personnel_isima_limos       7850  2 sept.  2019 xlib.c

Pour information, le fichier .bash_history contient les dernières commandes tapées, .bashrc et .bash_profile sont des fichiers de configuration du bash, un type de shell (celui que l'on utilise actuellement) et le dernier un fichier texte standard.

Exercice 1

Exercice 2

Si votre voisin met un répertoire non vide, vous ne pourrez pas l'effacer (sauf si vous savez jouer avec l'umask / setfacl)

Comment peut-on faire l'équivalent du chmod 000 avec le formalisme avec les lettres ?

chmod a= fichier

La commande chown (pour changer de propriétaire) est en général associée à l'administrateur. La commande chgroup est disponible dès que l'utilisateur appartient à plusieurs groupes.

Les liens

La commande ls permet d'avoir des informations sur les liens (option -l) et sur le numéro d'inode (option -i) qui est le même pour un fichier et son lien physique

Lien physique

Pour faire un lien physique d'un fichier, la syntaxe n'est pas naturelle :

$ ln fichier_original lien_physique

Lien symbolique ->

La syntaxe pour créer un lien symbolique est la suivante :

$ ln -s fichier_original lien_symbolique

En fonction de l'éditeur que vous avez utilisé, vous n'avez pas eu tous le même effet. On s'attendrait à ce qu'il soit impossible d'éditer le lien symbolique (comportement de gedit) mais vi, nano et kate suivent le lien et recréent un nouveau fichier (même nom mais inode différent). Pluma propose d'éditer un fichier portant le nom du lien en lecture seule (sic)

soffice permet de lancer un éditeur de texte à la word mais que se cache-t-il derrière cet exécutable ?

$ which soffice
/usr/bin/soffice
$ ls -l /usr/bin/soffice
lrwxrwxrwx 1 root root 38 Aug 19 01:53 soffice -> /usr/lib64/libreoffice/program/soffice
$ ls -l /usr/lib64/libreoffice/program/soffice
-rwxr-xr-x 1 root root 5645 Jul 25 04:02 /usr/lib64/libreoffice/program/soffice

Le code précédent permet de savoir quelle commande est appelée quand on exécute soffice. On cherche ensuite à avoir plus d'informations et on voit que c'est un lien symbolique. On va ensuite voir ce qu'il y a derrière le lien !

  COPIER /COLLER au mulot  
Sélectionner le texte à copier avec la souris. Placez-vous à l'endroit où vous voulez copier et appuyer sur le bouton du milieu de la souris (ou clic molette), c'est fait !

Quelle version du logiciel se cache derrière le nom générique du logiciel de dessin gimp ?

Il s'agit de la version 2.10 sur nightmare !

Quelle commande est réellement appelée par latex ?

Il s'agit de la commande pdftex !

Redirections

Redirection de la sortie standard

Pour rediriger le résultat d'une commande dans un fichier, il suffit de taper :

$ commande > fichier

Si on ne veut pas effacer le contenu du fichier mais ajouter la sortie à la fin du fichier :

$ commande >> fichier

Voici la commande pour lister un niveau seulement d'une arborescence :

$ tree -L 1 -d /home/local.isima.fr

Qui a dit que ça marchait aussi avec un ls ?

Comment créer un fichier si l'on n'a pas d'éditeur (et que le fichier n'est pas trop long) ?

$ cat > fichier_a_creer
une super methode pour creer un truc
avec des sauts de ligne
on finit par un appui simultané sur les touches CONTROLE et D
$ cat fichier_a_creer  

Redirection de la sortie d'erreurs standard

Rediriger la sortie d'erreurs standard dans un fichier permet d'analyser après coup ce qu'il s'est mal passé. C'est particulièrement utile pour les traitements longs en arrière-plan ou lorsque le compilateur C/C++ est trop bavard.

Si le fichier fichier n'existe pas, tester le résultat des commandes suivantes :

$ ls fichier
$ ls fichier 2> erreurs
$ cat erreurs

Si le résultat de la sortie d'erreurs ne vous intéresse pas, vous pouvez la détourner vers les limbes informatiques :

$ ls fichier 2> /dev/null

On utilisera cela pour la commande find et ne pas avoir la liste des répertoires que l'on ne peut pas parcourir.

Redirection de l'entrée standard

Rediriger l'entrée standard permet de simuler une saisie de l'utilisateur :

$ commande < fichier

Éditer un fichier et mettre un petit calcul, par exemple : "40 + 5" puis exécuter la commande bc

$ bc < fichier

Commande find

La commande find permet de trouver des éléments (tous les fichiers .bashrc) dans une arborescence de départ (/home/local.isima.fr).

$ find /home/local.isima.fr -name ".bashrc" -print 

Pour ne pas voir les répertoires où vous ne pouvez pas aller (operation denied), il suffit de préciser 2> /dev/null

Pour ne pas faire "tomber" le NAS, il est "interdit" de faire des recherches sur le répertoire / directement. Vous devez restreindre vos recherches si possible.

Pour trouver tous les liens du répertoire courant et des sous-répertoires, on peut taper :

$ find . -type l

Si vous consultez les pages man, pouvez-vous trouver comment afficher tous les répertoires ?

On peut également faire une recherche pour trouver tous les fichiers de notre $HOME dont la taille est supérieure à 100M

find $HOME -size +100M -print

On peut même les effacer automatiquement avec l'option -delete ou l'option -exec et ce qui va bien... mais on fera cela dans 2 séances !