Un répertoire est un fichier contenant des lignes de la forme: nom,prénom,num tel, ville
Notre but est d'écrire un programme ( script ) de gestion de répertoire permettant de consulter le répertoire ou d'y ajouter des entrées.
Exemple : repertoire.sh -aff-nom -aff-prenom -aff-tel -ch-nom PETIT -ch-prenom Pascal
Copiez le fichier /etc/passwd dans votre home directory. Editez uniquement les champs contenant le login et la home directory.
Triez passwd sur le nom
Extraire les nom de login et UID puis triez suivant les UID, le tout en une seule commande, vous redirigerez le tout vers un fichier
Dans le fichier de résultat précédent remplacer les ":" par des " " (espace).
Editez les cinq dernières lignes du fichier.
Editez les cinq premiers caractères du fichier.
cd | |
cp /etc/passwd ~ | |
cut -d: -f1,6 passwd |
sort -t: +0 -1 passwd
cut -d: -f1,3 passwd | sort -t: -n +1 -2 > lefichier
cat lefichier | tr ":" " " > lefichier
Nota:
On aurait pu avoir le même résultat en une seule commande:
cut -d: -f1,3 | sort -t: -n +1 -2 | tr ":" " " > lefichier
tail -5 lefichier
head -5c lefichier
Dans votre répertoire courant, créez en une commande les fichiers suivants:
annee1 Annee2 annee4 annee45 annee41 annee510 annee_saucisse banane
Créer le répertoire Year dans votre répertoire courant, en une commande déplacez les fichiers précédemment créés dans le répertoire Year.
Lister tous les fichiers | se terminant par 5 | |
commençant par annee4 | ||
commençant par annee4 et de 7 lettres maximum | ||
commençant par annee avec aucun chiffre numérique | ||
contenant la chaîne ana | ||
commençant par a ou A |
Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le répertoire /tmp en une seule commande.
touch annee1 Annee2 annee4 annee45 annee41 annee415 annee_saucisse annee_banane
mv [aA]nnee* ./Year
ls *5 |
ls annee4* |
ls annee4? |
ls annee[!0-9]* |
ls *ana* |
ls [aA]* |
cp *[41]? /tmp
1 |
#! /bin/sh |
testez le :
3. On travaille avec le fichier adresses.txt. Ecrire un script noTel.sh ayant comme argument un nom et un prénom qui retourne le numéro de téléphone de la première personne. du fichier ayant ce nom et ce prénom.
4. modifiez votre script de façon à ce qu'il indique "non trouvé" s'il n'y a personne ayant ce nom et prénom dans le fichier adresses.txt (remarque: consultez la page de manuel de la commande grep et regardez les codes de retour).
5. Ecrire un script coordonnees.sh ayant un nom et un prénom comme argument qui indique les coordonnées de la première personne ayant ce nom et ce prénom . L'affichage se fera sous la forme : "prenom NOM habite nomVille (codePostal) et a comme No de tel: numeroTel". Le nom de la personne sera en majuscule.
chmod g+w fic1
chmod uog+x script
chmod u-wx toto
chmod og+wx toto
C'est l'option -R
. Par exemple, pour interdire tous les droits aux fichiers présents dans une branche du répertoire confidentiel
, on peut faire :
chmod -R og-rwx confidentiel
C'est l'option -m
qui permet de le faire. Par exemple, pour créer un répertoire en lecture interdite aux autres :
mkdir -m og-r repertoire
bireme ~ $ ll /usr/sbin/mount
-r-xr-xr-x 1 root bin 27208 Jan 9 2000 /usr/sbin/mount*
Il s'agit d'un fichier éxécutable par tout utilisateur.Auteur : Joël Riou.
Soient tele un fichier qui contient le répertoire téléphonique suivant :
Boileau 024867-6235
Derrick 024867-1842
Ernest 024867-1234
Grand 024867-2240
Herbrant 024867-0256
Jonathan 024867-7358
Louis 024867-3237
Tardif 024867-5341
Wagner 024867-1234
Et noms la liste suivante des noms et départements correspondants :
Ernest Dept. 389
Frolo Dept. 217
Grand Dept. 311
Tardif Dept. 454
Wagner Dept. 520
Construire un fichier NTD (nom, téléphone, département) où chaque ligne est un nom suivi du numéro de téléphone puis du numéro de département. Comment faire pour avoir tous les noms dans le fichier NTD ? Comment obtenir un fichier DNT où chaque ligne est composée (dans cet ordre) du numéro de département, du nom et du numéro de téléphone ? Soit numeros le fichier des numéros de téléphones :
024867-0256
024867-1234
024867-5555
024867-7358
Sélectionner du fichier tele les lignes où figurent les numéros du fichier ci-dessus.
join tele noms > NDT
Pour avoir toutes les lignes des deux fichiers en sorties (même celles qui ne font pas partie de la jointure) :
join -a1 -a2 tele noms > NDT
join -a1 -a2 -o 2.3,0,1.2 tele noms > DNT
-o 2.3,0,1.2 pour avoir en sortie le champ 3 du deuxième fichier (2.3), le champ jointure en ne prenant que l'union (0) et le champ 2 du premier fichier.
Enfin, pour joindre le fichier tele et le fichiers numeros, il faut d'abord trier tele selon le champ de jointure (ici les numéros de tétéphone) :
sort -k 2 tele | join -1 2 -2 1 - numeros
La jointure est faite sur le champ 2 du premier fichier (-1 2) et le champ 1 du deuxième fichier (-2 1). Le symbole - représente la sortie du sort.
Quel est le système installé? |
uname -a |
Quelle est la distribution installée? |
cat /etc/issue |
Quels sont les utilisateurs en cours du système? |
who |
Ouvrir un nouveau terminal en utilisant un autre compte. |
su user |
Fermer ce terminal. |
exit |
Tester la commande man pour obtenir de l'aide sur man. |
man man |
On a la possibilité de rediriger l'entrée et la sortie standard, non plus vers un fichier, mais vers un autre programme. Les programmes conçus pour être utilisés de cette manière sont appelés filtres. Nous en avons vu quelques-uns (cat, grep qui peut être utilisé comme un filtre). Pour effectuer la redirection, on utilisera un pipe noté |. Par exemple, la ligne cat /etc/services | grep 25 | more permet d'afficher toutes les lignes de /etc/services contenant le mot 25.
Lisez les pages de man des commandes wc, sort, cat, uniq et répondez aux questions suivantes :
Quelles sont les enchaînements de commandes (une seule ligne) nécessaires pour effectuer les opérations suivantes :
On utilisera la commande cut -f champs -d séparateur pour découper un fichier en colonne selon des séparateurs. Par exemple cut -f 1-3,5 -d : /etc/passwd donne les commandes 1 à 3, puis 5 du fichier passwd où le séparateur est :
Pour les questions suivantes, trouvez la ligne de commande permettant de faire l'opération voulue. Pour afficher les informations sur les utilisateurs (fichier passwd réseau), il faut faire ypcat passwd.
But de l'exercice : apprendre à se servir de .
et ..
(«point» et «point point»). Supposons que vous avez l'arborescence suivante chez vous :
Vous vous trouvez dans votre répertoire personnel, dans ~
(tilde).
Taper
cd Rapport/docs/afaire
cd ../fait
Taper
cd ../..
ou
cd ~/Rapport
Il faut taper
less ~/www/index.html
ou
less ../www/index.html
cd docs/
Il y a un petit piège dans cette question. En effet, si vous tapez
ls -l Mail/
vous allez obtenir le contenu du répertoire Mail/
, mais pas le statut du répertoire lui-même. Il faut donc utiliser l'option -d
de ls
:
bireme ~ $ ls -ld Mail
drwx------ 2 toto litt98 512 Apr 2 19:02 /users/98/litt/toto/Mail/
Taper cd
, sans arguments.
Strictement rien ! Ça n'a aucune importance.
Auteur : Émilia Robin, Joël Riou. Dernière modification : Sat Sep 20 11:11:58 2003 +0000 par Joël Riou.