Retourner au contenu. Retourner à la navigation

 

Module 1

by admin @ 23/02/2006

Chapitre 3 - Commandes de base

Suite de commandes utiles à l’utilisation de votre machine sous Linux

Opérations sur les fichiers et répertoires

Nous allons lister ici, une suite de commandes utiles à l’utilisation de votre machine sous Linux :


But de la commande

Linux

Equivalence MsDos

Se déplace vers le répertoire rep

cd rep

cd rep

Liste le contenu d’un répertoire (-R pour un listage récursif)

ls rep

dir

Copie un fichier source vers un fichier destination (-R pour un répertoire)

cp source destination

copy

Déplace un fichier source vers une destination (peux servir à renommer un fichier

mv source destination

move

Crée un répertoire

mkdir rep

mkdir rep

Efface un fichier (-rf pour effacer un répertoire)

rm fichier

del / deltree fichier

Crée un lien destination qui va pointer sur une source (-s pour un lien symbolique)

ln source destination

non disponible

Met à jour la date de modification du fichier, ou crée un fichier vide si le fichier n’existe pas.

touch fichier ou repertoire

non disponible


Lecture de fichier


cat fichier

Affiche le contenu du fichier sur la sortie standard

more fichier

Lit le contenu d’un fichier page par page. (Il doit lire l’intégralité du fichier avant de l’afficher)

less fichier

Equivalent à more sauf qu’il n’est pas obligé de lire l’intégralité du fichier et permet de remonter dans l'affichage

tail fichier

N’affiche que les dernières lignes d’un fichier (-n permet de spécifier le nombre de lignes à afficher)

head fichier

Comme tail, mais affiche les N premières lignes d’un fichier (N=10 par défaut)

grep "chaine" fichier

Recherche l’occurence d’une chaine de caractères "chaine" dans un ou plusieurs fichiers


Noms, attributs des fichiers et globbing

3.1 Noms des fichiers

Les noms de fichiers sont "case sensitives", c’est à dire qu’ils tiennent compte des majuscules et des minuscules. Le nom d’un fichier peut contenir jusqu’à 255 caractères.

Pour accéder à un fichier comportant des caractères spéciaux dans son nom, on doit placer le nom du fichier entre guillemets (ou utiliser des backslash avant les caractères spéciaux) :

luser@localhost $ vi "ceci est un test.txt"
luser@localhost $ vi ceci\ est\ un\ test.txt

3.2 Attributs des fichiers

Pour lister le contenu d’un répertoire, nous utiliserons la commande ls

Afin de disposer de plus d'informations, nous ajouterons l’option -l

luser@localhost $ cd /tmp
luser@localhost $ mkdir un_repertoire
luser@localhost $ touch un_fichier
luser@localhost $ ln -s un_fichier un_lien

luser@localhost $ ls
un_fichier un_lien un_repertoire

luser@localhost $ ls -l
total 4
-rw-r--r-- 1 ualc galc 10 Dec 3 00:42 un_fichier
lrwxrwxrwx 1 ualc galc 10 Dec 3 00:43 un_lien -> un_fichier
drwxr-xr-x 2 ualc galc 4096 Dec 3 00:42 un_repertoire

Notons que les fichiers ou répertoires débutant par un "." sont cachés, c'est-à-dire qu’ils ne seront pas visible avec la commande ls. Si nous souhaitons voir les fichiers cachés, on passe en argument -a à ls :

luser@localhost $ ls
toto profile tools

luser@localhost $ ls -a
. .profile
.. .rhosts
.cshrc .shrc
.login tools
.login_conf profile
.mail_aliases toto
.mailrc test.c
Le type du fichier est reconnaissable par la présence d'un symbole à l'extrême gauche du listing :

-

Fichier ordinaire

d

Répertoire

l

Lien symbolique



4. Le globbing

Le globbing est l’utilisation de caractères spéciaux tels que "*", "?".

  • *: correspond à aucun ou plusieurs caractères

  • ? : correspond à un caractère

  • [a-z] : correspond à un ensemble de caractères

  • [^a-z] : correspond à tous les caractères sauf ceux de cet ensemble

Voici la liste des fichiers utilisés pour l'exemple :

luser@localhost $ ls
index.htm sommaire.htm t0st.c table.htm test.c

On affiche tous les fichiers finissant par ".htm"

luser@localhost $ ls *.htm
index.htm sommaire.htm table.htm

On affiche tous les fichiers sauf les fichiers finissant par la chaîne "htm".

luser@localhost $ ls *[^htm]
t0st.c test.c

Exemple avec "?" qui signifie un caractère non vide :

luser@localhost $ ls t?st.c
t0st.c test.c

On affiche tous les fichiers comportant "st" dans le nom :

luser@localhost $ ls *st*
t0st.c test.c

5. L'editeur VIm

Nous avons choisis de vous présenter cet éditeur de texte car c'est le plus utilisé sur la plupart des systèmes UNIX. VIm est une version améliorée de l'éditeur VI, possédant plus de commandes et d'options. VI est toujours le plus distribué sur les systèmes Unix, mais une maitrise de VIm vous permettra de vous débrouiller avec l'éditeur VI.

Le logiciel "vimtutor" permet d'apprendre les principales commandes très simplement, en vous les présentants pas à pas.

5.1 Appel de l’éditeur

Editer un fichier s’il existe, sinon, éditer un nouveau fichier vide :

vi fichier

Editer chacun des fichiers :

vi fichier_1 fichier_2

5.2 Modes d’édition

Contrairement aux éditeurs wysiwyg (what you see is what you get) VIm fonctionne par mode.

2 modes bien distincts existent :

Le mode insertion :

Les caractères tapés s'insèrent directement dans le texte en cours

Le mode commande

Les caractères tapés sont considérés comme des commandes d'édition de texte

Le logiciel démarre par defaut en mode commande.

i permet de passer en mode insertion

: permet de passer en mode commande

ESC permet de sortir des différents modes.

Le tableau ci-dessous présente les commandes principales à utiliser en mode commande.


Commande

Description

:w

Sauvegarde les changements

:q

Quitte le document en cours

:q!

Quitte le document en cours sans sauvegarder les changements

:wq

Enregistre et quitte l'editeur

:f file2

Enregistre sous un autre nom le document (équivalent de enregistrer sous)

/hop

Recherche l'occurence hop et la met en surbrillance, "n" se positionne sur la prochaine occurence

v

Permet de passer en mode visualisation pour faire une sélection par exemple

d

Equivalent de couper, aprés une sélection par exemple

dd

Coupe la ligne entière

y

Equivalent de copier, après une sélection par exemple

yy

Copie la ligne entière

p

Coller après le curseur

5.3 Mode Edition

Après l'utilisation de ces commandes, l'éditeur passe en mode édition :


Commande

Description

a

Ajoute après le curseur

A

Ajoute après la ligne courante

i

Insère avant le curseur

I

Insère au debut de la ligne courante avant le premier caractère non-blanc

o

Ouvre une nouvelle ligne en-dessous de la ligne actuelle

O

Ouvre une nouvelle ligne au-dessus de la ligne actuelle


6. tar, gzip, bzip2

6.1 tar

tar [options] [fichiers]

La commande tar est une ancienne commande Unix qui permet aisément d’archiver, c’est-à-dire de réaliser la sauvegarde d’un ensemble de fichiers en un seul fichier. Ce fichier peut être compressé après, mais tar ne compresse pas les fichiers qu'il archive.

La plupart des archives se trouvent sous ce format.

fichiers désigne un ensemble de fichiers ou toute une arborescence précédée d’un chemin absolu (à partir de /) ou relatif.

Si c’est un chemin absolu qui est indiqué, il sera conservé dans l’archive et permettra ensuite d'être récupéré par la suite.

options


Commande

Description

-x

Extraire le contenu d’une archive

-c

Créer une nouvelle archive

-t

Afficher seulement la liste du contenu de l’archive, sans l’extraire

-f fichier

Indiquer le nom du fichier archive

-v

Mode verbeux, affiche le détails des opérations

-z

Compresser ou décompresser en faisant appel à l’utilitaire gzip

-j

Compresser ou décompresser avec l’utilitaire bzip2

-p

Préserver les permissions des fichiers

Exemples :

Création d'archives

1 - Effectuer la sauvegarde de tous les fichiers du répertoire /home/toto dans le fichier sauve.toto.tar placé dans le répertoire courant :

luser@localhost $ tar -cvf sauve.toto.tar /home/toto

2 - Effectue, en plus de l’archivage, une compression des fichiers :

luser@localhost $ tar -cvzf sauve.toto.tar.gz /home/toto

Listing

luser@localhost $ tar -tvf sauve.toto.tar

Extraction

1 – Extrait tout le contenu de l'archive dans le répertoire courant :

luser@localhost $ tar -xvf sauve.toto.tar

2 - Décompresse et extrait :

luser@localhost $ tar -xvfz sauve.tar.gz

3 – Extrait de l’archive le répertoire passé en argument :

luser@localhost $ tar -xvfz sauve.tar.gz home/toto/tmp

6.2 gzip

Elle est utilisée pour compresser un fichier quelconque, et en particulier une archive tar. L'extraction se fait par la commande gunzip, ou de manière totalement équivalente par gzip -d.

gzip [options] [fichiers]

Elle peut décompresser les fichiers .gz, mais aussi les fichiers .z , .Z

options :


-1 à -9

Fixe le niveau de compression -1 etant le plus faible

-d

Décompresse l'archive passée en argument

-c

Ecrit sur la sortie standard au lieu de remplacer le fichier d’origine

-l

Affiche des infos sur les fichiers de l'archive (taux de compression...)

-r

Gzip parcoure tous les répertoires de manière récursive lors de la dé/compression

Exemples :

1 - Compresse backup.tar et le remplace par le fichier backup.tar.gz d’une taille beaucoup plus réduite :

luser@localhost$ gzip backup.tar /home/toto

2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le suffixe .gz :

luser@localhost $ gzip -9 *.txt

6.3 bzip2

Bzip2 admet la même syntaxe que gzip, mais effectue une compression plus efficace au détriment d'un besoin accru de mémoire et cpu.


7. Recherches de fichiers

7.1 find

find [chemin] [options] [expression]

Trouve tous les fichiers sur un du répertoire chemin qui correspondent à une expression. find recherche dans les sous répertoires.

Exemple : pour rechercher tous les fichiers mp3 contenus dans les répertoires personnels des utilisateurs :

luser@localhost $ find /home/ -name "*.mp3"

Option

Description

-atime +n (-n)

Trouve les fichiers auxquels on a accédé il y a plus de n jours (ou moins de n jours)

-mtime +n (-n)

Trouve les fichiers modifiés il y a plus de n jours (ou moins de n jours)

-name "toto*"

Trouve les fichiers dont le nom commence par toto

-maxdepth n

Définit le niveau maximum de sous-répertoire à explorer

-type

Indique le type de fichier à rechercher :

  • l pour les liens symboliques
  • d pour les répertoires
  • f pour les fichiers

Exemple : nous voulons rechercher tous les répertoires du répertoire courant contenant "rep" dans leur nom, en ne descendant pas dans les sous-répertoires

luser@localhost $ find . -type d -maxdepth 0 "*rep*"

On peut utiliser find pour exécuter une commande sur certains fichiers :

find [chemin] [option] -exec cmd {} \;
  • Les fichiers trouvés sont passés à cmd comme des paramètres.

  • {} sera remplacé par le nom du fichier.

  • Le point virgule execute la commande sans demander d'arguments supplémentaires, normalement le cas avec un "\;".

Exemple :

Pour effacer tous les fichiers .avi de mon répertoire :

luser@localhost $ cd ~
luser@localhost $ find . -name "*.avi" -exec rm {} \;

7.2 slocate – locate

locate est un lien symbolique de la commande slocate.

La commande slocate utilise une base de données que vous devez mettre à jour régulièrement.

Des fichiers récemment créés ne sont donc pas forcément référencés. La base de données peut être mise à jour manuellement par le super utilisateur (root) avec la commande slocate -u ou encore updatedb

L’avantage de slocate est de permettre une recherche beaucoup plus rapide qu’avec la commande find. En effet, lors d'une recherche, la commande find parcourant à chaque lancement le contenu entier du disque, il est bien plus rapide d'utiliser la commande locate

Exemple : recherche tous les fichiers dont le nom comporte la chaîne toto :

luser@localhost $ locate toto

8. "Pipes" et Redirections

Une des bases essentielles d'un système Unix / Linux est la redirection d'un flux émanant d'un programme en direction d'un autre.

8.1 Les flux standards

Les flux standards sont au nombre de trois :

STDIN (0) : STDIN n’est ni plus ni moins que l’entrée au clavier (dite "entrée standard"). Cela veut dire que tout ce que vous tapez au clavier va passer par ce canal d’entrée/sortie.

STDOUT (1) : STDOUT est ce que l’on appelle la "sortie standard". Les informations qui apparaissent à l’écran passent par le canal STDOUT.

STDERR (2) : STDERR est la "sortie d’erreur standard". L’utilité d’avoir deux flux de sortie permet de séparer les messages d’erreurs et la sortie normale.

Les numéros 0,1,2 désignent respectivement STDIN, STDOUT et STDERR, et peuvent être utilisés dans les commandes shell.

8.2 Redirections

Ainsi, si nous exécutons un programme comme ls, il va afficher le résultat sur la sortie standard, c'est à dire l'écran par défaut. Il est possible de rediriger ces différents flux vers des fichiers, d’autres flux…

Ceci se fait par le biais des signes "<" et ">" Une commande "commande > un fichier" va créer un fichier "un fichier" contenant le résultat de la commande "commande".

De même, avec le signe "<" au lieu de ">" aurait utilisé le contenu du fichier "un fichier" en entrée de la commande "commande".

Exemple :

$ cd /tmp
$ ls -l /bin
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...

$ ls -l /bin > un_fichier
$ cat un_fichier
total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
-rwxr-xr-x 1 root bin 295012 Sep 3 1999 bash1
lrwxrwxrwx 1 root root 5 Nov 10 2000 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
...

Si on utilise plusieurs fois des redirections sur un même fichier, avec ce que l’on a vu, le fichier est écrasé à chaque fois. Pour éviter cela il est possible d’utiliser "<<" à la place de "<" et ">>" à la place de ">", auquel cas les données seront concaténées dans le fichier (mises à la suite).

luser@localhost $ ls linux-lfs/
linux-lfs-flat.vmdk linux-lfs.vmx nvram
linux-lfs.vmdk linux-lfs.vmx.WRITELOCK vmware.log

luser@localhost $ ls evolution/
addressbook-sources.xml config mail shortcuts.xml
cache gtkrc-mail-fonts meta vfolders.xml
camel-cert.db local searches.xml views

luser@localhost $ ls linux-lfs/ >> fichier
luser@localhost $ ls evolution/ >> fichier

luser@localhost $ cat fichier
linux-lfs-flat.vmdk
linux-lfs.vmdk
linux-lfs.vmx
linux-lfs.vmx.WRITELOCK
searches.xml
shortcuts.xml
vfolders.xml
views

Voici un exemple montrant la redirection de la sortie standard et de la sortie d’erreur standard :

Avec l’outil find, on va rechercher un fichier dont le nom comporte "tes" dans le répertoire /etc. On redirige les résultats dans le fichier "fichier" et les erreurs dans le fichier "erreurs" :

2> signifie que l’on redirige l’erreur standard et > signifie implicitement 1>

luser@localhost $ find /etc/ -name "*tes*" > fichier 2> erreurs

luser@localhost $ cat fichier
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

luser@localhost $ cat erreurs
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied

Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :

luser@localhost $ find /etc/ -name "*tes*" > fichier 2>&1
luser@localhost $ cat fichier
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied
/etc/CORBA/servers/gnotes_applet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

Voici un dernier exemple montrant la redirection de l’entrée standard :

luser@localhost $ cat .bashrc
export PS1="\[\033[1;35m\][\u@\h \W]$\[\033[0m\] "
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
BLA=‘ps aux | grep XFree86‘
if [ ! "$BLA" == "" ]; then
export TERM=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -G’
alias vi=’vim’

luser@localhost $ tr ’A-Z’ ’a-z’ < .bashrc
export ps1="\[\033[1;35m\][\u@\h \w]$\[\033[0m\] "
export path=$path:/usr/local/bin:/usr/local/sbin
bla=‘ps aux | grep xfree86‘
if [ ! "$bla" == "" ]; then
export term=xterm-color
fi
alias ncftp=’ncftp3’
alias ls=’ls -g’
alias vi=’vim’

Avec tr, on a converti les caractères majuscules en minuscules, le flux d’information venant du fichier ".bashrc".

8.3 Pipes

Les "pipes" ("|") quand à eux sont "des voies de communication" d’un processus vers un autre.

Par exemple si nous faisons "commande 1 | commande 2", le résultat de la commande "commande 1" va être utilisé en entrée de la commande "commande 2".

Il est possible de chaîner ce type de commande autant que l’on veut. Rien de tel qu’un exemple :

luser@localhost $ ls -la /bin > un_fichier
luser@localhost $ grep "bzip" un_fichier
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover

luser@localhost $ ls -la /bin | grep "bzip"
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover
Par admin Dernière modification 22/03/2007 15:52
Navigation
Actualités
15/09/2008 Sortie de la version VLC 0.9.2
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
18/06/2008 Firefox 3 !
09/06/2008 Linux Pratique Essentiel
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Cours Module 1 Chapitre 3 - Commandes de base