Manipulation de fichiers sous GNU+Linux

Sommaire

Index

Manipulation de fichiers sous GNU+Linux

Introduction

Les exercices suivants sont prévus pour découvrir et utiliser les commandes ou pages de manuel suivantes:

Ouvrir les pages de manuel correspondant à ces commandes est donc nécessaire pour pouvoir réaliser ces exercices.

Récupération des fichiers de travail

Créer un répertoire tpfichiers et se placer dans ce répertoire pour réaliser les exercices proposés ci-dessous.

Vous allez télécharger le fichier manipulation-fichiers.tar.gz en utilisant la commande wget.

Pour cela cliquer bouton droit sur le lien ci-dessus et copier l’adresse du lien

Ensuite, coller cette adresse dans la commande suivante:

wget ADRESSE_DU_LIEN

Décompressez ce fichier avec une commande tar appropriée. Placez-vous ensuite dans le répertoire extrait: vous êtes prêt pour la suite.

Un peu de théorie

Exécution de scripts

Pour exécuter un script nommé exemple, plusieurs solutions possibles:

# Première possibilité
bash exemple

# Deuxième possibilité
chmod +x exemple
./exemple

Lister des fichiers ou dossiers

La commande ls affiche par défaut les fichiers dans le dossier courant.

Les fichiers cachés ne sont pas affichés par défaut.

Les fichiers ou dossiers cachés sont les fichiers ou dossiers dont le nom commence par un point .

Pour afficher les fichiers cachés avec la commande ls, on utilise l’option -A (exemple: ls -A)

La commande ls peut être paramétrée avec les options -d, -F, -R, -a, -A, -l (entre autres).

Observer l’effet de ces options sur la sortie de la commande.

Regarder dans le manuel de cette commande à quoi correspondent ces options.

Compter des lignes, des mots ou des caractères

La commande wc permet de compter les éléments dans un fichier ou dans l’entrée standard (stdin).

Prenons un fichier nommé nombres.txt.

Le résultat de la commande cat nombres.txt est :

Un deux trois
Quatre
Cinq Six

Vous pouvez créer ce fichier avec le contenu ci-dessus.

Le résultat de la commande cat nombres.txt | wc est:

$ cat nombres.txt | wc
     3       6      30

Ceci indique que le fichier contient:

La commande wc peut être paramétrée avec les options -c, -l, -w.

Observer l’effet de ces options sur la sortie de la commande.

Regarder dans le manuel de cette commande à quoi correspondent ces options.

Les wildcard

L’interpréteur de commande du shell a un fonctionnement particulier: avant d’exécuter la commande, il va vérifier si certaines chaînes de caractères peuvent être remplacées par des noms de fichiers présents dans le répertoire courant.

Par exemple, créons un répertoire nommé liste et créons quelques fichiers :

mkdir liste
cd liste
touch arbre pierre mousse herbe rocher fleur roseau r air

La commande touch permet de créer un fichier vide ou de changer la date de modification d’un fichier (il prend alors la date d’appel de la commande).

L’interprétation de la ligne de commande suivante donnera :

$ echo r*
r rocher roseau

Ici, l’interpréteur a remplacé r* par tous les fichiers :

La commande suivante donnera:

$ echo *r
air fleur r rocher

Ici, l’interpréteur a remplacé r* par tous les fichiers :

La commande suivante donnera:

$ echo *r*
air arbre fleur herbe pierre r rocher roseau

Ici, l’interpréteur a remplacé *r* par tous les fichiers :

La commande suivante donnera:

$ echo ??r*
air herbe

Ici, l’interpréteur a remplacé ??r* par tous les fichiers :

La commande suivante donnera:

$ echo [rm]*
mousse r rocher roseau

Ici, l’interpréteur a remplacé [rm]* par tous les fichiers :

La commande suivante donnera:

$ echo [rm]o*
mousse rocher roseau

Ici, l’interpréteur a remplacé [rm]o* par tous les fichiers :

Cette fonctionnalité du shell est connue sous le nom de globbing.

On parle également alors d’expansion de motif, wildcard pattern expansion ou glob.

La page de manuel correspondante est accessible par la commande :

man 7 glob

Utiliser les wildcard avec les commandes ls et ls -l et observer les effets

Exécution, affichage

  1. Exécutez le fichier init (qui crée un répertoire unix et des fichiers et dossiers à l’intérieur de ce répertoire)

  2. Combien de fichiers ont été créés ?

On se déplace au préalable dans le répertoire unix

cd unix

Combien de fichiers sont créés:

ls -A | wc -l
  1. En êtes vous sûr ?
  2. Combien de répertoires ont été créés ?
ls -A -F -d */ | wc -l
  1. Listez tous les fichiers dont le nom contient un F.
ls -A *F*
ls -A | grep F
  1. Listez tous les fichiers dont le nom contient deux chiffres.
ls -A *[0-9]*[0-9]*
  1. Listez tous les fichiers dont le nom contient deux chiffres côte à côte.
ls -A *[0-9][0-9]*
  1. Effacez tous les fichiers dont le nom fini par d.
rm *d
  1. Copiez tous les fichiers dont le nom contient un 1 ou un 3 dans un sous-répertoire nommé copy (créez le si nécessaire).
mkdir -p copy
cp -r *[13]* copy

Pour ceux qui souhaiteraient exécuter ces deux commandes en une seule ligne, deux possibilités:

mkdir -p backup/copy ; cp -r *[13]* backup/copy
mkdir backup/copy && cp -r *[13]* backup/copy
  1. Mettez, dans un fichier nommé listeComplete.txt, la liste de tous les fichiers créés par le script init.
ls -A | grep -v copy > listeComplete.txt
ls -Ad .tmp* tmp* > listeComplete.txt
echo .tmp* tmp* > listeComplete.txt
  1. Déplacez-le dans le répertoire de base de votre compte.
mv listeComplete.txt ~
mv listeComplete.txt $HOME
mv listeComplete.txt /home/nomutilisateur

ou

cd
mv tpfichiers/premiersPas/unix/listeComplete.txt .
  1. Utiliser la commande tree -a pour vérifier si vous aviez bien vu tous les fichiers créés.
  2. Utiliser la commande file sur chaque fichier pour vérifier à quel type il correspond.

Essayer les commandes suivantes:

file unix/*/
file unix/*/*

Manipulation de répertoires et fichiers

  1. Effacez le répertoire unix créé par le script init. Fermez le terminal, et ouvrez de nouveau un terminal. Cette partie se fait uniquement par la ligne de commande.
cd ..
rm -rf unix
  1. Vérifier où on se trouve dans l’arborescence des fichiers (répertoire courant)
pwd
  1. Se déplacer à la racine du disque. Lister les répertoires existants.

On ne peut pas se déplacer à la racine d’un disque sans connaître les disques connectés.

Par contre la racine du système de fichier virtuel est /

cd /
  1. Se déplacer dans votre répertoire de travail par défaut (3 solutions possibles, notez-les !!!)
cd ~
cd $HOME
cd
  1. Créer un répertoire de nom UNIX
  2. Sous UNIX créer un répertoire de nom TP1
mkdir -p UNIX/TP1

ou

cd UNIX
mkdir TP1
  1. Aller dans le dernier répertoire créé
  2. Créer un répertoire de nom tmp
  3. Aller dans le répertoire tmp
  4. Créer un fichier vide nommé vide.txt
touch vide.txt
  1. Lister l’arborescence du répertoire UNIX en format long
# Format long => ls
ls -Rl .

tree -Dphug
  1. Remonter d’un niveau dans l’arborescence.
cd ..
  1. Détruire le répertoire tmp avec la commande rmdir
rm -r tmp

Retourner dans le répertoire tpfichiers.

  1. Prendre le fichier dessus.txt et le copier dans le répertoire de base de votre compte utilisateur
cp dessus.txt ~

# Ou

cp dessus.txt $HOME
  1. Visualiser le fichier dessus.txt à l’aide de la commande cat.
  2. Le visualiser à l’aide de la commande more. Quelles sont les différences ?
  3. Faire de même avec la commande less (pour quitter less, appuyer sur la touche Q)
  4. Le rouvrir avec la commande less. Rechercher le mot locataire.
  5. Recréer le répertoire tmp
  6. Faire une copie du fichier dessus.txt dans le répertoire tmp
  7. Aller dans le répertoire tmp et renommer le fichier dessus.txt en Dessous.txt.
mv dessus.txt Dessous.txt
  1. Le déplacer dans le répertoire de base de votre compte
mv Dessous.txt ~
  1. Vérifier que le fichier s’y trouve bien