Les exercices suivants sont prévus pour découvrir et utiliser les commandes ou pages de manuel suivantes:
ls
wc
glob
rm
cp
mv
pwd
touch
rmdir
cat
more
less
file
Ouvrir les pages de manuel correspondant à ces commandes est donc nécessaire pour pouvoir réaliser ces exercices.
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.
Pour exécuter un script nommé exemple
, plusieurs
solutions possibles:
# Première possibilité
bash exemple
# Deuxième possibilité
chmod +x exemple
./exemple
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.
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.
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
:
r
La commande suivante donnera:
$ echo *r
air fleur r rocher
Ici, l’interpréteur a remplacé r*
par tous les fichiers
:
r
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
:
r
La commande suivante donnera:
$ echo ??r*
air herbe
Ici, l’interpréteur a remplacé ??r*
par tous les
fichiers :
?
peut être
remplacé par n’importe quel caractère)r
La commande suivante donnera:
$ echo [rm]*
mousse r rocher roseau
Ici, l’interpréteur a remplacé [rm]*
par tous les
fichiers :
r
ou la lettre
m
La commande suivante donnera:
$ echo [rm]o*
mousse rocher roseau
Ici, l’interpréteur a remplacé [rm]o*
par tous les
fichiers :
r
ou la lettre
m
o
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écutez le fichier init
(qui crée un répertoire
unix
et des fichiers et dossiers à l’intérieur de ce
répertoire)
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
ls -A -F -d */ | wc -l
F
.ls -A *F*
ls -A | grep F
ls -A *[0-9]*[0-9]*
ls -A *[0-9][0-9]*
d
.rm *d
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
crée bien le dossier (ou
l’arborescence):mkdir -p backup/copy ; cp -r *[13]* backup/copy
mkdir backup/copy && cp -r *[13]* backup/copy
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
mv listeComplete.txt ~
mv listeComplete.txt $HOME
mv listeComplete.txt /home/nomutilisateur
ou
cd
mv tpfichiers/premiersPas/unix/listeComplete.txt .
tree -a
pour vérifier si vous
aviez bien vu tous les fichiers créés.file
sur chaque fichier pour
vérifier à quel type il correspond.Essayer les commandes suivantes:
file unix/*/
file unix/*/*
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
pwd
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 /
cd ~
cd $HOME
cd
UNIX
UNIX
créer un répertoire de nom
TP1
mkdir -p UNIX/TP1
ou
cd UNIX
mkdir TP1
tmp
tmp
vide.txt
touch vide.txt
UNIX
en format
long# Format long => ls
ls -Rl .
tree -Dphug
cd ..
tmp
avec la commande
rmdir
rm -r tmp
Retourner dans le répertoire tpfichiers
.
dessus.txt
et le copier dans le
répertoire de base de votre compte utilisateurcp dessus.txt ~
# Ou
cp dessus.txt $HOME
dessus.txt
à l’aide de la
commande cat
.more
. Quelles
sont les différences ?less
(pour quitter
less
, appuyer sur la touche Q)less
. Rechercher le mot
locataire.tmp
dessus.txt
dans le
répertoire tmp
tmp
et renommer le fichier
dessus.txt
en Dessous.txt
.mv dessus.txt Dessous.txt
mv Dessous.txt ~