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
cp
réalise une copie locale de la cible$ cp memoLien copieLocale (1)
1 crée le fichier copieLocale
avec les droits utilisateur -
La commande
mv
renomme le lien$ mv memoLien nouveauLien (1)
1 remplace memoLien
parnouveauLien
qui 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 autreLien
pointe 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 :
-
%F
est équivalent à%Y-%m-%d
-
%T
est é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
: Affichern
lignes 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