D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL
1. ln : création de liens (links) vers un fichier
$ ln nomCible nomLien (1)
| 1 | nomCible peut être un fichier ou un répertoire |
L’option -s permet de créer des liens symboliques, c’est l’utilisation la plus courante (au contraire des liens dits "en dur", comme on vient de le voir, sans cette option).
$ ln -s /home/ftp/memo_ed1.tar.gz memoLien
$ ls -l
lrwxrwxrwx 1 alain alain 25 jun 18 10:45 memoLien -> /home/ftp/memo_ed1.tar.gz
Remarques:
-
Le créateur du lien est propriétaire de son lien, pas du fichier / répertoire vers lequel il pointe. Celui-ci conserve les droits du propriétaire…
-
La destruction du lien (
rm memoLien) n’altère pas la cible. -
La commande
cpréalise une copie locale de la cible$ cp memoLien copieLocale (1)1 crée le fichier copieLocaleavec les droits utilisateur -
La commande
mvrenomme le lien$ mv memoLien nouveauLien (1)1 remplace memoLienparnouveauLienqui pointe sur la même cible -
Un lien peut pointer vers un autre lien, récursivement, et ainsi de suite.
$ ln -s nomLien autreLien (1)1 autreLienpointe surnomLien, qui lui-même pointe sur …
2. date : utilisation pour récupérer la date (création/modification) d’un fichier
$ date -r nomFichier (1)
jeudi 27 mai 2010, 16:01:05 (UTC+0200)
| 1 | L’option -r permet de réaliser cette opération. |
$ date -ru nomFichier (1)
jeudi 27 mai 2010, 14:01:05 (UTC+0000)
| 1 | L’option -u permet d’avoir la date en Temps Universel. |
2.1. Formats particuliers avec +%format
Par exemple, pour obtenir la date "unix", soit le nombre de secondes depuis le 1er janvier 1970 (date dite EPOCH) :
$ date -u -r nomFichier +%s
1274968865
Quelques autres formats :
-
%V→ semaine (01 à 53) -
%y→ année (00 à 99) -
%H→ heure (00 à 23) -
%M→ minute (00 à 59) -
%S→ seconde (00 à 60) -
%m→ mois -
%d→ jour -
etc, (cf man date)
Autres formats notables :
-
%Fest équivalent à%Y-%m-%d -
%Test équivalent à%H:%M:%S
Exemple, pour afficher la date actuelle avec un "petit baratin" autour :
$ echo "il est `date +'%F%T'` et tout va bien"
il est 2011-07-1311:37:30 et tout va bien
2.2. date : utilisation pour mettre à jour l’heure du système
# date -s 11:46
mercredi 13 juillet 2011, 11:46:00 (UTC+0200)
3. diff : différences entre deux fichiers, création d’un fichier patch
L’option -s permet de savoir si 2 fichiers sont identiques (ou non) :
$ diff -s fichier_1 fichier_2
Une utilisation très courante de diff est la création d’un fichier représentatif des modifications apportées à un fichier. Dans l’exemple suivante, le fichier ficOrigine a été modifié pour donner ficModif.
Les modifications sont repérées par un + ou un > s’il s’agit d’un ajout et par un - ou un < dans le cas contraire. La granularité de la détection est au niveau de la ligne.
$ diff ficOrigine ficModif
2c2
< Contenu original
---
> Contenu modifié
On préfère en général rediriger la sortie vers un fichier représentatif des modifications.
$ diff ficOrigine ficModif > ficPatch
L’option -r étend le champ d’analyse à plusieurs fichiers, de manière récursive (sous-répertoires et leurs fichiers).
Autres options :
-
-u: Affichernlignes de contexte unifié (3 lignes par défaut) -
-b: Ne pas tenir compte du nombre d’espaces entre les mots -
-B: Ne pas tenir compte des lignes formées uniquement d’espaces (ligne vide) -
-N: <nombre de lignes> = <numéro de la première ligne> - <numéro de la dernière ligne> + 1
Souvent utilisé sur des répertoires et sous répertoires :
$ diff -urbNB repertOrigine repertModif > ficPatch
Dans le cas où diff s’applique à des répertoires, la commande lsdiff permet de localiser les
fichiers impactés :
$ lsdiff ficPatch
4. patch : application de modifications à un fichier (ou ensemble de fichiers)
On dispose du fichier ficOrigine, on désire lui appliquer toutes les modifications apportées dans le fichier ficModif, et contenues dans le ficPatch.
$ patch -p0 ficOrigine < ficPatch
ficOrigine est maintenant identique à ficModif.
Selon les répertoires impliqués et le répertoire de travail, il peut être
nécessaire de modifier le chemin. C’est l’object de l’option -pN : N pour
supprimer le N e / et tout ce qu’il y a devant.
Exemple de chemin: /dirx/diry/dirz/fic1
-
-p0:/dirx/diry/dirz/fic1(ne supprime rien) -
-p1:dirx/diry/dirz/fic1(supprime le 1er/, il n’y a rien devant) -
-p2:diry/dirz/fic1(supprime le 2e/et tout ce qu’il y a devant) -
-p3:dirz/fic1