Vous êtes sur la page 1sur 25

Les commandes fondamentales de Linux

Sommaire

1 Introduction o 1.1 Contributions et remerciements o 1.2 Objectifs o 1.3 Manuvres prliminaires 1.3.1 mulateur 1.3.2 Live 1.3.3 Installation 2 Composition du systme 3 Commandes fondamentales o 3.1 Mise en place 3.1.1 Connexion o 3.2 Arrter le systme (shutdown) o 3.3 Variables d'environnement (echo) o 3.4 Se dplacer dans l'arborescence de rpertoires (cd) o 3.5 quel programme correspond une commande ? (type) o 3.6 Dans quel rpertoire suis-je actuellement ? (pwd) o 3.7 Lister le contenu d'un rpertoire (ls) 3.7.1 Motifs (glob) 3.7.2 Options o 3.8 Voir le contenu d'un fichier (less) o 3.9 Modifier le contenu d'un fichier (l'diter) (emacs, joe) 3.9.1 joe 3.9.1.1 Configuration 3.9.2 Emacs 3.9.3 joe est Emacs o 3.10 Crer un compte utilisateur 3.10.1 Prambule 3.10.1.1 Invite (prompt) de root ou d'utilisateur o 3.11 Dclarer qui est propritaire d'un fichier (chown) o 3.12 Copier un fichier ou un rpertoire (cp) 3.12.1 Options 3.12.1.1 -r o 3.13 Dclarer les droits d'accs (permissions) accords (chmod) 3.13.1 Expression numrique des permissions (systme octal) o 3.14 Supprimer un fichier (rm) 3.14.1 Options o 3.15 Crer un rpertoire (mkdir) o 3.16 Dplacer ou renommer un fichier ( mv) 3.16.1 Options o 3.17 Chercher un fichier ou rpertoire (find, locate, which) 3.17.1 find 3.17.1.1 -type 3.17.1.2 -exec 3.17.2 locate o 3.18 Trouver un texte (grep) o 3.19 Compactage et dcompactage (compress, gzip, bzip2, 7zip) 3.19.1 compress 3.19.2 gzip 3.19.3 bzip2 3.19.4 7zip o 3.20 Archivage de donnes (tar) o 3.21 Connatre l'espace disque utilis (df et du) 3.21.1 Options o 3.22 Contrler les ressources utilises par les processus (top, ps, kill) 3.22.1 top 3.22.2 ps 3.22.2.1 pstree 3.22.3 kill o 3.23 Redirection (des entres/sorties d'excutables) o 3.24 Interconnexion de commandes: les pipes o 3.25 Lien (ln) o 3.26 Alias (alias) 4 Pour aller plus loin

[] Introduction

Premier auteur (jusqu' 1998): Armand Delcros Wikis par (depuis 2009): Nat Makarevitch

[] Contributions et remerciements

Nat Makarevitch pour ses nombreuses critiques et corrections, Thomas Ortega pour ses bienveillantes remarques et la remise en forme HTML du document, Kim Ashue pour sa relecture, Philibert de Mercey pour son aide la mise en page.

L'objectif de ce document est d'enseigner les commandes fondamentales de Linux (et donc d'Unix).

[] Objectifs
Nous explorerons ce qu'offre le shell le plus utilis sous Linux, donc une partie de ce que peut faire un utilisateur capable de diriger la machine en crant des lignes de commandes plutt qu'en se contentant d'un cliquodrme.

[] Manuvres prliminaires
Pour apprendre il faut pratiquer, donc disposer d'une machine fonctionnant sous Linux qui n'est pas srieusement exploite. Son arrt ou sa modification ne doit rien menacer. Si vous en avez dj une ngligez la prsente section (passez la suivante).
[]

mulateur

Un mulateur animant Linux sous votre navigateur web est le moyen le plus simple de commencer. Votre navigateur simulera une machine qui excutera Linux. Pour cela cliquer ici, ce qui doit ouvrir un nouvel onglet o vous trouverez une machine virtuelle fonctionnant sous Linux, immdiatement utilisable. Elle fonctionne dans votre navigateur et ne peut rien casser. N'hsitez pas explorer et exprimenter car il n'y a aucun risque d'endommager quoi que ce soit. Certaines commandes n'y sont pas installes mais c'est le moyen le plus facile, immdiat et sans danger d'aborder le sujet. Il faut toutefois employer un navigateur rcent et un ordinateur au processeur puissant.
[]

Live

Si vous disposez d'une machine il n'est pas ncessaire d'y installer d'emble Linux, il suffit dans un premier temps de l'amorcer de faon live . Vous devrez graver un CD ou un DVD. Nous recommandons une version de Linux ( distribution ) appele Knoppix. Tlcharger tout d'abord l'image de CD ou de DVD, par exemple (en France Mtropolitaine) de Free.fr ou (en anglais) via le document officiel. Il est recommand de vrifier tout le moins son empreinte SHA et, au mieux, GPG, toutefois cela dpasse le cadre du prsent document.

Graver le disque correspondant. Amorcer la machine grce ce disque. Une invite libelle boot: apparatra (en bas). Saisir knoppix lang=fr . Si vous n'y parvenez pas attendre dmarrage complet puis, ouvrir un terminal et saisir setxkbmap 'fr(multi)' (la documentation officielle n'existe qu'en anglais). Linux fonctionne alors sans tre install, toutefois il est possible de modifier le contenu des disques de la machine donc ne pas faire n'importe quoi.

[modifier] Installation
Si vous le pouvez installez Linux sur une machine, de prfrence virtuelle (VMware, Microsoft Virtual PC...). Nous recommandons la distribution utilise par ceux qui vous aideront, ou dfaut appele Ubuntu ou Debian.

[] Composition du systme
Linux est le nom du seul noyau, le cur du systme d'exploitation qui est lui-mme un ensemble de logiciels grce auxquels la machine est rendue plus facilement utilisable par l'humain comme par une application. Une famille de logiciels appels shells fournit un moyen de diriger ce dernier en lui communiquant des commandes. Nous exposerons ici la faon d'employer le shell le plus rpandu sous Linux, nomm Bash , ainsi que certains utilitaires.

[] Commandes fondamentales
ATTENTION : SOUS Linux, comme sous tout systme UNIX, minuscules ET MAJUSCULES NE SONT PAS QUIVALENTES.

[] Mise en place
La plupart des distributions Linux dmarrent d'emble, sitt le systme amorc, une interface graphique fournie par un ensemble logiciel appel X Window et donnant l'cran d'accueil une apparence agrable dont voici un exemple (cliquer sur l'image pour zoomer):

Si X Window n'est pas dmarr vous ne verrez aucune fentre et surtout des caractres, quasi pas de graphisme sauf peut-tre un Tux en haut gauche, du charabia termin par la mention login: suivie d'un curseur clignotant:

[modifier] Connexion
(Cette tape n'est pas ncessaire si vous employez l'mulateur prconis) Connectez-vous au systme en tant qu'utilisateur root, donc saisir root en guise de login (et soumettre grce la touche Entre , videmment!), puis le mot de passe (password) adquat (qui a t dfini lors de l'installation ou est fourni par la documentation). Si la machine emploie X Window explorez les menus afin de dmarrer un terminal (il peut-tre appel Terminal , Konsole , KTerm , Gnome terminal , xterm , rxvt ...), par exemple via le menu Applications, Accessoires ou Systme.

Vous vous trouvez alors devant le shell, qui est un logiciel grce auquel vous pourrez passer des commandes, par exemple afin de dmarrer des logiciels. Plusieurs shells existent, le plus rpandu est nomm bash (csh et zsh en sont d'autres). Le shell affiche, en dbut de ligne, quelques caractres fournissant diverses informations et invitant lui communiquer une commande. C'est appel son invite (synonyme: prompt).

[] Arrter le systme (shutdown)


(Ceci ne vaut pas sous l'mulateur prconis, toutefois c'est une ncessaire habitude contracter) Ne jamais teindre brutalement la machine, il FAUT INFORMER Linux de votre souhait de l'arrter afin qu'il prenne les dispositions ncessaires. Pour cela invoquer, sous le compte root: shutdown -r now ramorce immdiatement l'ordinateur. shutdown -h now arrte compltement le systme. Vous pouvez teindre l'ordinateur lorsque sera affich:
System halted The system is halted

[] Variables d'environnement (echo)


Nous traiterons d'un shell nomm bash. Commenons par nous assurer que c'est bien le shell employ. Saisir echo $SHELL. Soumettez cette commande au systme grce la touche Entre , videmment! Le systme retourne le nom du shell courant. S'il ne s'agit pas de /bin/bash certains des lments ci-aprs exposs ne seront pas corrects. (Sous l'mulateur prconis aucun nom ne sera retourn. Il fournit en fait d' ash , assez compatible et complet pour que le plus gros de ce qui suit soit utilisable) En ralit echo est la commande proprement dite, qui fait office de verbe d'action, et "$SHELL" l'argument que nous lui fournissons, qui prcise sur quoi elle doit travailler. Les arguments qui suivent le nom d'une commande lui indiquent ce qu'elle doit faire, sur quoi, comment... La commande echo se contente de rpter les arguments qui lui sont fournis, de sorte que echo toto affiche "toto" et echo titi tutu affiche "titi tutu". $SHELL dsigne le contenu d'une variable d'environnement (c'est ce que le signe dollar plac en prfixe rvle) nomme SHELL . Lorsqu'il lit un caractre '$' suivi d'un groupe de caractres le shell remplace l'ensemble par le contenu de la variable d'environnement ainsi nomme.

Pour examiner le contenu d'une variable saisir echo $nom_de_la_variable. echo $SHELL affiche le contenu d'une variable d'environnement nomme SHELL , qui par convention recle le nom du shell actif. La variable PATH' dfinit la liste des chemins o sont cherchs les fichiers excutables invoqus. Pour examiner son contenu: echo $PATH. Le sparateur est le caractre ':'. Si le PATH contient "/usr/local/bin:/usr/bin:/bin", alors chaque fois que le systme tentera, sous votre compte, de lancer un excutable il cherchera le fichier l'abritant tout d'abord dans le rpertoire nomm "/usr/local/bin" puis, s'il ne l'y trouve pas, dans "/usr/bin", puis dans "/bin". Si vous souhaitez ajouter au PATH un rpertoire "/home/delcros/bin" qui contient vos programmes personnels, il vous faudra ditant le fichier "~/.bash_profile" de sorte qu'il contienne: "PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/home/delcros/bin". Pour que son contenu soit pris en compte aprs une modification vous devez vous reloguer ou utiliser la commande source . La variable PS1 contient la dfinition du prompt: PS1="[\u@\h \w \$] " affichera votre nom d'utilisateur (\u), puis le caractre "@", puis le nom de la machine (\h, pour host), puis une espace, puis le rpertoire de travail courant (\w, pour working directory), puis un caractre '#' si vous tes root et '$' sinon. Voici un autre paramtrage de prompt: PS1="[\t \d \u@\h \w \$] "

[] Se dplacer dans l'arborescence de rpertoires (cd)


L'invite est paramtrable et ressemble souvent ceci : [root@mistra /root]$ (mistra est le nom de ma machine). Le premier root signifie que vous vous tes actif sous le compte utilisateur de l'administrateur systme. Vous tes donc en pleine possession de la machine, vous pouvez faire absolument n'importe quoi, jusqu' supprimer des fichiers ncessaires son fonctionnement... faites donc trs attention... En thorie il ne faut utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits d'utilisateurs permettent de travailler en temps normal sans risquer de mettre le systme en panne en cas d'action inconsidre ou de mauvaise manipulation . Nous exposerons ci-aprs comment crer un compte utilisateur. Dans le prompt [root@mistra /root]$ la mention /root exprime que vous vous trouvez dans un rpertoire nomm /root . Sous Unix un rpertoire n'est pas essentiellement diffrent d'un fichier, vous lirez ou entendrez donc souvent le mot fichier utilis pour dsigner un objet la nature non dtermine qui peut tre un fichier ou un rpertoire. Tout fichier (ou rpertoire...) se trouve un endroit prcis, appel son chemin d'accs, constitu:

du nom du rpertoire racine qui est prsent sur tous les systmes donc commun tous les chemins et par convention appel / ( barre oblique , plus communment appel slash) ou Le tout premier rpertoire, , est appel / . Tous les autres rpertoires y prennent plus ou moins directement racine) suivi de la srie des noms des rpertoires qui y mnent, deux noms conscutifs tant spars au moyen de la barre oblique suivie de son nom

Si un rpertoire nomm rpertoire1 contient un rpertoire appel rpertoire2 recelant lui-mme un fichier monfichier le chemin complet de ce dernier est /rpertoire1/rpertoire2/monfichier .

Actuellement, donc, vous vous trouvez connect sous le compte de l'administrateur systme et dans le rpertoire appel /root , ou peut-tre /var/root . Dplaons-nous dans la "racine" du systme en saisissant cd /. Sparez bien cd et "/" par un caractre espace car Unix exige une grande prcision. En pratique cd est la commande et "/" l'argument que nous lui fournissons. Les arguments suivent la commande et sont parfois prcds d'un tiret. Vous tes maintenant dans le rpertoire racine et le prompt devient [root@nom_de_votre_machine /]#. Tapez la commande ls (list) afin d'obtenir la liste de son contenu, vous devez obtenir quelque chose comme:
bin mnt boot cdrom dev devfs etc floppy opt proc root sbin sys tmp usr home initrd var lib lost+found

Si certains fichiers ou rpertoires manquent sur votre machine ce n'est pas important. Dplaons-nous dans le rpertoire qui contient une grande partie des programmes (souvent simplement appels binaires ) nomm /usr/bin en saississant cd /usr/bin. La commande reste cd mais cette fois l'argument est "/usr/bin". Vous pouvez l aussi obtenir le contenu du rpertoire en utilisant la commande ls. Maintenant allons voir ce que contient le rpertoire /etc (aperu lorsque nous avons list le contenu du rpertoire racine /). Nous avons deux possibilits pour nous y rendre : soit nous revenons dans le rpertoire racine et nous nous rendons ensuite dans le rpertoire etc; soit nous nous rendons immdiatement dans le rpertoire /etc. Mthode n1 : cd / (pour se rendre la racine) puis cd etc Cette mthode est fastidieuse car elle ncessite de taper deux commandes successives. Nous pouvons utiliser la deuxime mthode pour nous rendre directement dans le rpertoire /etc en crivant le chemin complet : Mthode n2 : cd /etc ... et nous voici directement placs dans le rpertoire /etc . Nous avons indiqu que pour se rendre dans le rpertoire etc , il fallait d'abord se rendre dans le rpertoire racine. Pour ce faire nous avons plac un / devant etc . Lorsque l'on fournit la commande cd un ~ au lieu d'un chemin, elle nous dplace automatiquement dans notre rpertoire personnel, galement appel rpertoire utilisateur ou home, celui o nous pouvons stocker nos travaux. Si vous tes l'administrateur systme la commande cd ~ vous placera dans le rpertoire /root . Dans le cas o je suis (je suis logg en tant qu'utilisateur delcros ) je vais automatiquement me retrouver dans le rpertoire /home/delcros. Les rpertoires des utilisateurs non dots de privilges se trouvent d'ordinaire sous /home. Pour revenir dans votre rpertoire personnel cd ~ est la commande orthodoxe, toutefois cd suffit.

[] quel programme correspond une commande ? (type)

Certaines commandes sont dites internes car le shell contient le programme correspondant (ragissant la commande, par exemple cd ). La plupart des commandes se trouvent dans les rpertoires nomms /bin , /usr/bin . Les rpertoires /sbin et /usr/sbin reclent des commandes utiles l'administrateur, et /usr/local/bin abrite des commandes mises au point qui ne furent pas fournies par la distribution, donc par exemple des ralisations de l'administrateur. Lorsqu'on soumet un shell une commande qu'il ne connat pas il dtermine s'il s'agit du nom d'un programme excutable, et si c'est le cas le dmarre. Pour diverses raisons certaines commandes existent la fois sous forme interne et externe. En ce cas la version interne est par dfaut excute, sauf si l'on fournit le chemin d'accs de la version externe. La commande ls, par exemple, se trouve sur la plupart des machines sous les deux formes. Invoquer ls dmarre la version du shell, pour lancer la commande externe il faut par exemple invoquer /bin/ls . Pour dterminer si une commande est interne ou externe fournir son nom la commande type . Exemple:
$ type cd cd est une primitive du shell

D'autres, par exemple time , sont des mot-cls plutt que des commandes car ne sont pas autonomes (ils doivent porter sur une commande). Pour dterminer o se trouve, parmi les rpertoires du PATH, le fichier excutable d'un programme, par exemple d'une commande externe, employer la commande which (qui signifie lequel ) suivie de son nom, par exemple which ls . Si aucune rponse n'apparat le programme n'existe pas ou est une commande interne. Pour obtenir une liste complte utiliser l'option -a :
$ which -a ls /bin/ls

Pour chercher un fichier indpendamment du contenu du PATH on peut employer find ou (s'il est install) locate qui repose sur une sorte de base de donnes des noms de fichiers priodiquement rafrachie (donc peut fournir un rsultat obsolte).

[] Dans quel rpertoire suis-je actuellement ? (pwd)


Lorsque l'on se dplace dans les rpertoires, par dfaut le prompt bash n'affiche que le nom court de celui o l'on se trouve. Le nom court ne comprend pas le chemin complet. Or il peut arriver qu'un mme nom court corresponde plusieurs rpertoires bien distincts, donc que seuls les chemins qui y mnent permettent de les distinguer. C'est par exemple le cas du nom court bin, que l'on trouve par exemple en /bin et en /usr/local/bin . Il existe beaucoup d'autres exemples. Pour connatre le chemin du rpertoire o l'on se trouve on utilise la commande pwd (path of current working directory).

[] Lister le contenu d'un rpertoire (ls)


La commande ls permet d'obtenir beaucoup d'informations sur les fichiers et rpertoires. Dplaons-nous par exemple dans le rpertoire /bin : cd /bin Puis demandons liste de son contenu: ls

[] Motifs (glob)
Nous pouvons demander ls de ne lister que les fichiers dont les noms contiennent des caractres donns. Gagnons le rpertoire "/bin": cd /bin puis demandons par exemple liste des seuls noms de fichiers dont les noms commencent par la lettre "g": ls g* L'argument "g*" que nous venons de fournir est un motif, auquel on peut penser comme une sorte de filet dont les mailles sont dfinies par nous (utilisateur), en respectant un certain nombre de conventions, et qui est ensuite appliqu (jet) par le shell afin de slectionner des noms de fichiers qui y correspondent. Les principales conventions valides dans ce contexte, donc lorsque l'on dfinit un motif de slection de noms de fichiers destin au shell, sont:

l'toile (ou plutt l'astrisque) est un caractre gnrique slectionnant n'importe quel ensemble de caractres le point d'interrogation slectionnant n'importe quel caractre

Lorsque nous invoquons ls g*: 1. dans un premier temps le shell applique le motif (jette le filet) et slectionne les noms de fichiers du rpertoire courant qui correspondent au motif 2. dans un deuxime temps le shell lance ls en lui communiquant ce qu'il a slectionn, donc par exemple (si les seuls fichiers du rpertoire courant dont le nom commence par "g" sont grep , gunzip , gzexe et gzip ): ls grep gunzip gzexe gzip Cette interprtation de motif puis slection des noms de fichiers y correspondant est en anglais appele "glob". Elle fonctionne pour toutes les commandes, on peut donc saisir echo g*... et obtenir le mme rsultat qu'avec ls g*. On peut galement interdire au shell d'effectuer ce glob en plaant l'argument entre apostrophes. Exemple: ls 'g*', qui produit ici ls: ne peut accder g*: Aucun fichier ou rpertoire de ce type , car ls cherche bien entendu alors un fichier nomm "g*" (g suivi d'un astrisque), qui n'existe pas. echo 'g*', en revanche, fonctionne parfaitement puisque 'g*' devient alors un littral qui sera trait par echo comme n'importe quelle autre chane... qu'il se contente donc d'afficher, indpendamment de ce que contient le rpertoire courant.
[]

Options

Voici quelques options intressantes de la commande ls: ls -l liste les attributs de fichiers (les droits de lecture, d'criture et d'excution, le propritaire, le groupe, la taille en octets, sa date de cration ou de modification).
total 3615 -rwxr-xr-x -rwxr-xr-x lrwxrwxrwx -rwxr-xr-x -rwxr-xr-x lrwxrwxrwx -rwxr-xr-x -rwxr-xr-x 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root 2716 56380 4 18768 300668 3 16584 17408 Apr Dec May Mar Sep May Dec Nov 23 23 10 8 4 10 16 26 02:09 2008 20:01 19:17 2008 19:59 2008 2008 arch ash awk -> gawk basename bash bsh -> ash cat chgrp

(Note: la mention total 3615 exprime la taille cumule des fichiers, exprime en blocs de 512 octets.)

Ici, tous les fichiers appartiennent l'administrateur systme (root) et son groupe (root). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une flche visible ici sur la ligne awk -> gawk, dans la section consacre aux liens ln. -a liste tous (penser au mot "all") les fichiers du rpertoire, y compris les fichiers cachs. Cette option est trs utile lorsque l'on se trouve dans son rpertoire personnel car il contient les fichiers de configuration de l'utilisateur dont les noms commencent gnralement par un point et seule l'option -a permet de dtecter leur existence. D'autres options de ls sont utiles: -m affiche en sparant par une virgule au lieu de les prsenter en colonnes. -t trie par date, c'est--dire en les classant du rcent au plus ancien (penser time). -F trie par type. Ainsi un fichier suivi d'un slash (/) est un rpertoire, un fichier suivi d'une toile est un fichier excutable et un fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la section consacre ln). -S trie par ordre de taille dcroissante (penser size). -X trie par extension. -r trie par ordre alphabtique inverse (penser reverse). Cette option a la particularit d'inverser l'effet de toutes les autres options de tris requises. ls -tr affichera ainsi les fichiers par date (-t) en commenant par les plus anciens pour finir par les plus rcents.

[] Voir le contenu d'un fichier (less)


La commande less permet de lire le contenu d'un fichier texte. Nous avons vu que le rpertoire /root contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes avec un agencement et une syntaxe particulire. Regardons le contenu du fichier .bashrc qui permet de configurer souhait son shell: less .bashrc. Pour passer d'une page l'autre, tapez sur la touche espace. Pour revenir sur la page prcdente tapez sur b (back). Pour quitter tapez q . Une option utile de less est -N qui numrote les lignes (la numrotation de ligne apparat l'cran mais le fichier n'en est pas pour autant modifi). Si vous souhaitez connatre les autres options de less invoquez less --help.

[] Modifier le contenu d'un fichier (l'diter) (emacs, joe)


[modifier] joe
joe est simple et lger. C'est l'diteur que j'utilise pour faire une petite modification dans un fichiers de configuration. Lanons joe: joe La touche Ctrl (Control) permet de le commander. Combinaisons fondamentales: Ctrl-k h

afficher le panneau d'aide en ligne (un nouveau Ctrl-k h l'effacera). Note: dans les textes d'aide de joe le caractre ^ (circonflexe) reprsente par convention la touche Control, donc ce que nous prsentons ici par Ctrl-k h y est not ^KH Ctrl-k e ouvrir un fichier Ctrl-k d sauvegarder Ctrl-k x sauvegarder et quitter Ctrl-c quitter sans sauvegarder Attention: dans la version traduite en franais de joe les questions qu'il pose sont en franais... mais toute rponse qu'il doit analyser doit tre fournie en anglais. Exemple: la question Enregistrer (o,n,^C) ? il faut, pour accepter, rpondre y (yes). [modifier] Configuration En tant qu'utilisateur root diter, dans le rpertoire /etc/joe/ , les fichiers nomms joerc et jmacsrc de sorte que

-asis se trouve en dbut de ligne (pas d'espace avant le tiret), afin de pouvoir diter des caractres accentus -backpath path se trouve en dbut de ligne et soit suivi de /tmp , la ligne devenant donc -backpath /tmp , afin que les fichiers de sauvegarde de la prcdente version d'un fichier dit se trouvent dans /tmp plutt que dans le rpertoire courant

[]

Emacs

Emacs date de la fin des annes 70 et ne cesse d'voluer depuis, ce qui fait de lui, sans aucun doute possible, l'diteur le plus puissant. Bien plus qu'un diteur, il est un environnement de travail: dition, programmation, mail, news, shell ... bref on peut rester sous Emacs sans avoir besoin de quoi que ce soit d'autre. Ses adeptes sont trs nombreux, et ne leur dites pas qu'il est lourd ...vous vous tromperiez lourdement (je sais de quoi je parle ... j'ai fait l'erreur et en ce moment je suis sous Emacs... ;)) Lanons Emacs: emacs Ses combinaisons reposent sur les touches Ctrl (Control) et Meta (qui correspond souvent Alt). Ouvrons un fichier nomm linux-test grce la combinaison de touches suivante : Ctrl-x Ctrl-f, donc enfoncer la touche Control et la maintenir en position basse, taper x puis f , et relcher Control . La mention Find File : ~/ apparat (en bas, dernire ligne, dans le minibuffer ). Saisir le nom du fichier et valider grce la touche Entre. Son contenu apparat et vous pouvez le modifier. Les touches Backspace et Suppr fonctionnent comme sous n'importe quel diteur. Pour sauver tapez la combinaison de touches: Ctrl-x Ctrl-s. Si vous tes bloqu aprs avoir effectu de mauvaises manipulations, tapez Ctrl-g, si ncessaire plusieurs fois. Si vous avez fait des erreurs, Ctrl-x u supprime les dernires modifications.

Si vos touches de dplacement du curseur ne fonctionnent pas: Ctrl-p: monter d'une ligne. Ctrl-n: descendre d'une ligne. Ctrl-f: avancer d'un caractre. Ctrl-b: reculer d'un caractre. Ctrl-v: avancer d'une page. Alt-v: reculer d'un cran. Ctrl-d: supprimer le caractre sur lequel le curseur se trouve. Ctrl-s: recherche incrmentale. Meta-%: rechercher et remplacer. Pour quitter Emacs composer Ctrl-x Ctrl-c. Il m'est impossible de dcrire dans ce document les milliers de fonctions disponibles. Si vous souhaitez en savoir plus, explorer ses panneaux d'aide ou des documents publis:

http://www.linux-france.org/article/appli/emacs http://www.tuteurs.ens.fr/unix/editeurs/emacs.html http://www.emacswiki.org/emacs-fr/NouvelUtilisateurEmacs

[modifier] joe est Emacs


joe peut muler Emacs, ce qui pargne d'assimiler ses commandes propres tout en bnficiant d'un diteur compact et quasi partout disponible. L'invoquer pour cela avec la commande jmacs.

[] Crer un compte utilisateur


[] Prambule
Nous entrons maintenant dans une zone risque, mieux vaut donc se connecter en tant qu'utilisateur de la machine et non pas en tant qu'administrateur systme (root), car nous risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux ncessaires son bon fonctionnement. Nous allons donc crer un compte utilisateur, lui attribuer un mot de passe et nous loguer sur ce compte. Excutez les commandes suivantes, une explication dtaille interviendra ensuite dans la partie consacre l'administration systme:adduser le_nom_de_choix (votre prnom par exemple, mais sans accent et si possible long de moins de 8 caractres) su le_nom_de_votre_choix (la commande su permet de se loguer sous un autre compte). Il suffira de saisir exit pour revenir la session de travail root. [modifier] Invite (prompt) de root ou d'utilisateur L'invite propose lorsque l'on est connect sous compte root est souvent diffrente de celle d'un utilisateur sans droits tendus. Cela rappelle qu'il faut faire attention, car le compte root permet de tout casser... Traditionnellement l'invite de root est termine par un signe dise (#) et celle d'un utilisateur (non root) par un signe dollar ($).

[] Dclarer qui est propritaire d'un fichier (chown)


Prambule: cette section ncessite d'tre administrateur systme, il vous faut donc vous loguer sous ce compte, par exemple en utilisant la commande su: [delcros@mistra ~]$ su root Chaque fichier appartient un utilisateur ainsi qu' un groupe. Si, par exemple, nous avons effectu un ls -l linux-test et obtenu: -rw-r-r-- 1 delcros users 9 Jul 19 19:03 linux-test (Note: couleurs ajoutes pour simplifier l'expos) delcros est le nom du propritaire du fichier et users est celui du groupe auquel appartient le fichier.

L'administrateur systme peut dcider des utilisateurs membres d'un groupe, et permettre un utilisateur de dterminer lui mme qui fera partie du groupe. Le fichier /etc/group dcrit les groupes. Je peux dcider par exemple que le fichier linux-test n'appartient plus l'utilisateur "delcros" mais l'utilisateur "thomas":
[root@mistra delcros]# chown thomas linux-test

Vrifions:
[root@mistra delcros]# ls -l linux-test -rwxrw-r-- 1 thomas users 9 Jul 19 19 : 03 linux-test

Pour changer la fois le propritaire afin de le donner olivier et le groupe (ici: testeurs): chown olivier.testeurs linux-test Pour ne changer que le groupe: chown .testeurs linux-test

[] Copier un fichier ou un rpertoire (cp)


La syntaxe est: cp [option] nom-fichier(s)-origine nom-fichier-ou-rpertoire-destination Par exemple pour faire une copie d'un fichier du rpertoire o l'on se trouve nomm linuxtest en un fichier linux-test2 :
cp linux-test linux-test2'''

ATTENTION: si vous effectuez une copie d'un fichier sur un autre qui existe dj, le contenu de ce dernier sera remplac par celui de l'autre! Si vous souhaitez copier le fichier linux-test dans un rpertoire (par exemple /tmp ):
cp linux-test /tmp'''.

Pour lui donner un autre nom:


cp linux-test /tmp/linux-test2'''

[] Options
-i avertit de l'existence d'un fichier du mme nom et demande s'il peut ou non remplacer son contenu. Recopions nouveau le fichier linux-test sur linux-test2 , cette fois avec l'option -i: cp -i linux-test linux-test2. Le message cp: overwrite `linuxtest2'? (ou, en version franaise, cp: craser `linux-test2'?) apparat. Rpondre par "y" (yes) ou "n". En version franaise "o" (oui) fonctionne. -b comme l'option -i s'assure que la copie n'crase pas un fichier existant. Le fichier cras est toutefois alors sauvegard, renomm avec un suffixe tilde (~). -v affiche les noms des fichiers copis (pensez verbeux). Utile si vous souhaitez vrifier le bon droulement. -p lors de la copie les attributs des fichiers seront prservs (propritaire, groupe, date de cration... lire chown). [] -r

L'option -r copie de manire rcursive, donc l'ensemble d'un rpertoire et de ses sousrpertoires. Exemple: je possde dans mon rpertoire /home/delcros/personnel un rpertoire intitul mygale qui contient 3 sous rpertoires ( echecs , linux , xcaissa ):
/home/delcros/personnel/ /home/delcros/personnel/mygale/ /home/delcros/personnel/mygale/echecs/ /home/delcros/personnel/mygale/linux/ /home/delcros/personnel/mygale/xcaissa/

Je copie le rpertoire mygale ainsi que ses sous-rpertoires dans mon rpertoire /home/delcros/ en commenant par me placer dans le rpertoire recelant l'ensemble: cd /home/delcros/personnel/ puis en le recopiant: cp -r mygale /home/delcros. En associant l'option -v et -r: cp -rv mygale /home/delcros:
mygale -> /home/delcros/mygale mygale/index.html -> /home/delcros/mygale/index.html mygale/logo.gif -> /home/delcros/mygale/logo.gif mygale/linux -> /home/delcros/mygale/linux mygale/linux/linux.html -> /home/delcros/mygale/linux/linux.html
... ce n'est qu'une partie du rsultat ...

J'ai par exemple dj copi dans le rpertoire d'un utilisateur (pour qu'il en dispose) de la documentation qui se trouvait dans un rpertoire doc dont le propritaire tait l'administrateur systme. Pour cela j'ai copi tout le rpertoire et ses sous-rpertoires dans le rpertoire de l'utilisateur grce la commande cp et son option -r, puis j'ai dclar l'identit du nouveau propritaire de la copie et de ses sous rpertoires: [root@mistra delcros]# chown -R delcros.users doc. L'option -R (recursive) de chown le contraint propager son action dans les sous-rpertoires, tablissant de cette seule commande le propritaire de plusieurs rpertoires et de leurs fichiers.

[] Dclarer les droits d'accs (permissions) accords (chmod)


Linux permet de spcifier les modes d'accs ( un fichier ou rpertoire) autoriss, que l'on appelle droits d'accs ou permissions . Pour voir ces droits, il suffit d'utiliser la commande ls -l nom_du_fichier, qui produira par exemple:
[delcros@mistra ~]$ ls -l bidule -rw-r--r-- 1 adelcros users 3619 jun 6 21:49 bidule

Il y a l de nombreuses informations, certaines ne seront dcrites que plus tard. Le nom du fichier, bidule , apparat la fin de la ligne. Le premier adelcros signifie que le fichier appartient l'utilisateur adelcros . La mention users signifie qu'il appartient au groupe users . La partie qui contient -rw-r--r-- rvle la nature du fichier ainsi que les permissions (droits d'accs). Le premier de ces 10 caractres correspond la nature du fichier. Un tiret signifie qu'il est tout ce qu'il y a de plus classique. Si, la place du premier tiret, on observait un d cela signifierait qu'en ralit le fichier est un rpertoire (directory). Si on observait un l, alors le fichier serait un lien.

Dcomposons les 9 derniers caractres en 3 segments: rw- , r-- et r-1. Le premier rvle les droits accords au propritaire du fichier 2. Le deuxime rvle les droits accords aux comptes qui ne sont pas celui du propritaire et faisant partie du groupe auquel appartient le fichier 3. Le troisime rvle les droits accords aux autres comptes Dans chaque segment le premier caractre correspond au droit de lecture (not r, penser read), le deuxime correspond au droit d'criture (write) et le troisime correspond au droit d'excution (x, execution). Si la place d'un des ces caractres nous ne voyons qu'un tiret -, c'est que le droit correspondant n'est pas accord. -rw-r--r-- , par exemple, exprime que tous les utilisateurs ont le droit de lire le fichier et que seul son propritaire a le droit de le modifier. Personne ne peut lancer l'excution de ce fichier puisque x n'apparat pas. Lorsque l'on traite de permissions la lettre u (user) dsigne par convention le propritaire du fichier, la lettre g le groupe d'utilisateurs qui possde le fichier et la lettre o (others) les autres utilisateurs. La lettre a (all) fait rfrence tous les utilisateurs. Cette notation est la plus facile employer avec la commande de modification des permissions chmod. Seul le propritaire du fichier (ainsi que "root", qui dispose des pleins pouvoirs) a le pouvoir de modifier ces permissions. tablissons par exemple que n'importe qui pourra lire et modifier un fichier nomm linuxtest :
[delcros@mistra delcros]$ chmod a+wr linux-test

chmod est la commande changeant les modes d'accs a indique que tous (all) les segments seront touchs par la modification des permissions + signifie que l'on accorde une ou plusieurs permission(s) supplmentaire(s), qui s'ajoute celles qui sont dj tablies. Pour en retrancher il suffit d'utiliser en lieu et place le signe -. Pour tablir les permissions indpendamment de ce qu'elles sont dj il suffit d'employer le signe =. w signifie qu'il s'agit de la permission d'criture (write) r signifie qu'il s'agit galement de la permission de lecture (read)

Pour vrifier que tout a bien fonctionn, faites un ls -l linux-test qui montrera une premire colonne contenant -rw-rw-rwPour supprimer les droits d'criture et de lecture accords aux membres du groupe propritaire du fichier ainsi qu'aux autres utilisateurs: chmod go-wr linux-test

dans go le g signifie que la commande affectera les permissions accordes au groupe propritaire, et le o qu'elle affectera galement celles que l'on accorde aux autres utilisateurs (ceux qui ne sont ni le propritaire, ni membres du groupe auquel le fichier appartient, other users) wr signifie que la modification portera sur les droits d'criture ou de lecture. On aurait pu aussi crire la commande en mettant rw car l'ordre n'a pas d'importance.

Si je souhaite que le propritaire du fichier ne puisse pas excuter un fichier:


[delcros@mistra delcros]$ chmod u-x linux-test

Pour dfinir d'un seul mouvement toutes les permissions d'un fichier, on peut utiliser la syntaxe suivante (nous voulons que linux-test soit en lecture, en criture et en excution

pour le propritaire, que le groupe n'ait le droit que de le lire et excuter, et que les autres utilisateurs ne disposent d'aucun droit):
[delcros@mistra delcros]$ chmod u=rwx,g=rx,o= linux-test

Pour ter le droit d'y crire tous sauf au propritaire:


chmod g-w,o-w linux-test

Lorsqu'un programme (quel qu'il soit, y compris le shell) tente d'accder un fichier, le noyau Unix sait pour quel utilisateur le programme fonctionne. Si le fichier appartient l'utilisateur les droits accords au propritaire s'appliquent. Sinon, si le fichier appartient au groupe auquel l'utilisateur appartient, alors les droits accords au groupe auquel le fichier appartient s'appliquent. Sinon les droits accords aux autres utilisateurs seront respects. Exemple:
adelcros@mira:~$ ls -l secret.txt ----r--r-- 1 adelcros users 362 sep 17 22:55 secret.txt adelcros@mira:~$ less secret.txt less: secret.txt: Permission non accorde

Il n'est pas stupide d'interdire ainsi l'accs alors que l'utilisateur peut modifier les permissions du fichier (exemple: chmod u+r important.txt) donc s'en accorder le droit, car cela constitue une sorte de garde-fou en cas d'erreur: un logiciel tentant d'accder au contenu de ce fichier se le verra refuser et devra, pour obtenir satisfaction, modifier ses permissions, ce qui ne sera pas fait par hasard. Autre exemple:
adelcros@mira:~$ ls -l important.txt ----r--r-- 1 adelcros users 362 sep 17 22:55 important.txt adelcros@mira:~$ rm important.txt /bin/rm: dtruire un fichier protg en criture fichier rgulier `important.txt'?

[] Expression numrique des permissions (systme octal)


Il n'est pas ncessaire d'assimiler cette section, elle n'est destine qu' clairer des choses tranges parfois rencontres, par exemple dans des documentations. Une autre faon de dclarer (dfinir) les permissions existe. Elle repose sur une notation numrique remplaant, d'une part par un 0 (zro) chaque droit non accord (ceux que ls rvle au moyen d'un tiret) et, d'autre part, les autres (accords!) par un 1 (chiffre un). Pour chaque fichier les trois segments de permission (le premier dcrit les droits du propritaire, le deuxime ceux des membres du groupe auquel appartient le fichier, le troisime ceux de tous les autres comptes) rassemblent chacun 3 droits (r, w, x), il y a donc 23 donc 8 combinaisons possibles. C'est pourquoi un systme numrique de notation des permissions parfois adopt est dit octal.
Binaire -000 -------001 -------010 -------011 -------100 -------101 -------110 -------111 -------Logique ----(---) ------(--x) ------(-w-) ------(-wx) ------(r--) ------(r-x) ------(rw-) ------(rwx) ------Dcimal 0 1 2 3 4 5 6 7

'chmod digre cette notation. C'est pourquoi chmod u=rwx,g=rw,o=r nom_de_fichier quivaut chmod 764 nom_de_fichier car rwx (droits du propritaire) correspond 7, rw

(droits des membres du groupe auquel le fichier appartient) correspond 6, et r (droits des autres comptes) correspond 4. Les chiffres doivent tre exprims dans l'ordre, le premier pour le propritaire, le deuxime pour le groupe, le troisime pour les autres.

[] Supprimer un fichier (rm)


Effectuons nouveau une copie du fichier linux-test (tapez au pralable cd pour vous retrouver dans votre rpertoire personnel): cp linux-test linux-test2 Pour supprimer le fichier "linux-test2": rm linux-test2

[] Options
-i comme pour cp, l'option -i permet rm de demander l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question. -r supprime un rpertoire et ses sous rpertoires (attention, c'est TRS dangereux) -f supprime les fichiers dans lesquels il est interdit d'crire ainsi que les rpertoires, sans demande une confirmation ( utiliser avec prcaution...)

[] Crer un rpertoire (mkdir)


Pour crer un rpertoire, il suffit de taper la commande suivante (ici je cre dans /home/delcros un rpertoire nomm "personnel"): mkdir personnel Une option de mkdir est souvent utile: mkdir -p permet de crer une suite de rpertoire. Supposons que je veuille crer dans mon rpertoire /home/delcros la suite de rpertoires suivante : doc/mygale/mail. Je peux faire soit: mkdir doc , cd doc , mkdir mygale , cd mygale , mkdir mail Ou bien utiliser l'option -p qui me permet de crer la suite de rpertoires "parents" le plus simplement du monde: mkdir -p doc/mygale/mail

[] Dplacer ou renommer un fichier (mv)


Pour comprendre la commande mv (penser move), voyons une suite de commandes qui effectuent des oprations diffrentes: mv linux-test perso renomme le fichier "linux-test" en "perso" mv perso perso crase le fichier existant avec le fichier copi (dit source ). mv personnel mon-rpertoire: renomme le rpertoire personnel en mon-rpertoire . mv perso /home/delcros/mon-rpertoire: dplace le fichier perso dans le rpertoire /home/delcros/mon-rpertoire

[] Options
-b effectue une sauvegarde (penser backup) des fichiers avant de les dplacer: mv -b mon-rpertoire/perso /mon-rpertoire/linux-test renomme le fichier perso en linux-test , cependant vous trouverez dans le rpertoire une sauvegarde de perso nomme perso~ .

-i demande pour chaque fichier et chaque rpertoire s'il peut ou non dplacer fichiers et rpertoires (penser interactif) -u demande mv de ne pas supprimer le fichier si sa date de modification est la mme ou est plus rcente que son remplaant (penser update).

[] Chercher un fichier ou rpertoire (find, locate, which)


[] find
Exemple simple: comment trouver un fichier portant un nom donn ? find /home -name linux-test2 Analyse: "/home" indique que nous voulons chercher partir du rpertoire /home "-name" indique que nous voulons trouver un fichier portant un nom donn. Pour chercher tous les fichiers commenant par "linux-tes" et dfinir partir de quel rpertoire on souhaite effectuer la recherche on utilise cette syntaxe: find /home/delcros name 'linux-tes*' Le nombre d'options de find est impressionnant. En voici quelques unes: [] -type Indique le type de fichier que l'on recherche. Si vous cherchez seulement un rpertoire vous pourrez utilisez cette option ainsi: find /usr -type d .... Ici, on demande find de trouver des rpertoires, et non des fichiers, grce l'option -type d (penser directory, qui signifie rpertoire) [] -exec Excute une commande sur les fichiers trouvs. La diffrence entre -exec et -ok est que la deuxime vous demandera pour chaque fichier trouv si vous souhaitez rellement raliser l'opration: find -name 'linux-tes*' -print -ok rm {} \; ./linux-test
rm ... ./linux-test ? y

Avec l'option -exec la paire d'accolades indique l'endroit o se trouvera, lors de l'invocation de la commande, le nom du fichier trouv. L'anti-slash li au point virgule forme une squence d'chappemment.

[] locate
La commande locate a la mme mission que find mais explore une base de donnes qui contient la liste des fichiers et rpertoires. Cette base de donnes est en gnral automatiquement mise jour quotidiennement par le systme. La syntaxe est: locate nom_du_fichier. Bien que la commande locate soit trs intressante, elle ne possde pas la puissance des options de find. De plus, si vous crez des fichiers pendant la journe elle ne trouvera pas avant mise jour de sa base de donnes (le lendemain).

[] Trouver un texte (grep)


La commande grep est un pivot des commandes UNIX. Elle cherche une expression regulire dans un ou plusieurs fichiers. Exemple: grep fouille linux-commande.html cherche les lignes contenant le mot "fouille" dans le fichier nomm linux-commande.html . L'option -n produira le numro de chaque ligne contenant un rsultat. Une autre option trs utile est -l qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche.

[] Compactage et dcompactage (compress, gzip, bzip2, 7zip)


[] compress
Extension d'un nom d'un fichier compact: .Z. Il est obsolte, ne pas compacter grce lui. Si vous rencontrez un fichier d'extension .Z vous pouvez le dcompacter grce gzip: gzip -d nom_du_fichier.Z.

[] gzip
Extension d'un nom d'un fichier compact: .gz. Efficace et trs rpandu. Pour compacter un fichier: gzip nom_du_fichier , cela crera un fichier nom_du_fichier.gz et dtruira l'original. Pour dcompacter: gzip -d nom_du_fichier.gz , qui recrera l'original et supprimera la version compacte.

[] bzip2
Extension d'un nom d'un fichier compact: .bz2. Sa syntaxe et son comportement correspondent ceux de gzip. Pour compacter un fichier: bzip2 nom_du_fichier Pour dcompacter: bzip2 -d nom_du_fichier.bz2

[] 7zip

[] Archivage de donnes (tar)


La commande tar gre des archives, contenant chacune au moins un rpertoire ou fichier. Vous aurez souvent besoin de tar xzf nom_du_fichier.tar.gz , qui dcompacte une archive au format .tar.gz ou .tgz. L'extension .tar.gz indique que le fichier est une archive tar et qu'il est compact (.gz rvle qu'il l'est avec gzip). Les arguments employs dans la commande prcdente ( xzf ) peuvent tre ainsi compris: x

(extraction) dclenche l'extraction de certains fichiers d'une archive (lorsque l'on ne spcifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les extrait tous) z dcompacte l'archive grce gzip f traite un fichier-archive dont le nom suit (ici: nom_du_fichier.tar.gz ) Pour connatre la liste des fichiers contenus dans une archive compacte on emploiera tar tvzf nom_du_fichier.tar.gz t dresse liste du contenu de l'archive v est le mode "verbeux", qui montre tout Si je me trouve dans le rpertoire /home/delcros/ la commande suivante crera une archive du rpertoire /home/delcros/personnel : tar cvjf personnel.bz2 personnel c tar va crer une archive j tar compacte l'archive grce bzip2

[] Connatre l'espace disque utilis (df et du)


La commande df permet de connatre l'emplacement de montage des systmes de fichiers accessibles sur votre systme et leurs capacits restantes. La commande du permet de connatre l'encombrement sur disque du rpertoire spcifi et ses sous rpertoires.

[] Options
-c total cumul -h adoption d'units facilitant la lecture du rsultat par un humain

[] Contrler les ressources utilises par les processus (top, ps, kill)
[] top
La commande top affiche en continu des informations dcrivant l'activit du systme. Elle permet surtout de suivre les ressources que les processus utilisent (quantit de mmoire, pourcentage de CPU...). Vous pourrez utiliser l'option -d pour spcifier des dlais de rafrachissement (en secondes). Sous top il est possible d'expdier de manire interactive un signal un processus, par exemple afin de le stopper, en tapant k. top demande ensuite quel signal il doit envoyer et 15 (SIGTERM) est le signal par dfaut qui met fin un processus, 9 (SIGKILL) est beaucoup plus brutal et viter. Pour quitter top, appuyer simplement sur la touche "q".

Une famille d'utilitaires de type top existe.

[] ps
La commande ps dresse liste des processus actifs: ps
PID 341 344 1039 1219 TTY STAT p1 S p2 S p3 S p3 R TIME COMMAND 0:00 bash 0:00 bash 0:00 bash 0:00 ps

Le PID est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifi dans le systme par un nombre unique. Le "TTY" indique quel port de terminal est associ le processus. "STAT" indique l'tat (status) dans lequel se trouve le processus. Dans l'exemple, trois processus sont endormis (S comme "sleep"), et un autre en cours d'excution (R comme "run"). Ce dernier n'est autre que la commande ps que nous venons de lancer, qui se voit elle-mme . Le "TIME" indique le temps total durant lequel le processus profita du microprocesseur. "COMMAND" prcise, comme son nom l'indique, la commande qui cra le processus. Une simple commande ps n'indique pas tous les processus du systme. Le simple fait de lancer ps nous a juste indiqu les processus associs un terminal qui dpendent de l'utilisateur courant. En fait, il est tout a fait probable que d'autres processus non lis un terminal soient actifs: ps -ax les rvlera. Si en plus vous voulez connatre les utilisateurs associs chaque processus, il vous suffit d'utiliser l'option aux. Vous verrez alors plusieurs colonnes s'ajouter dont "USER" qui indique quel utilisateur appartient le processus. "%CPU" indique en pourcentage les ressources du microprocesseur sur le moment utilises par le processus. "%MEM" montre en pourcentage la proportion de mmoire vive dans la mmoire utilise par le processus, elle-mme fournie dans la colonne "RSS". "START" indique l'heure laquelle le processus a t lanc. [] pstree Cette commande permet d'afficher les processus sous forme d'arborescence donc de voir leurs inter-dpendances: pstree
init-+-crond |-emacs---emacsserver |-gpm |-inetd |-kerneld |-kflushd |-klodg |-kswapd |-loadmeter |-lpd |-6*[mingetty] |-named |-netscape---netscape |-4*[nfsiod] |-nxterm---slrn-gor---slrn |-portmap |-pppd |-rc.news---innwatch---sleep |-rpc.mountd |-rpc.nfsd |-rpc.yppasswdd |-sendmail |-syslogd |-update |-xconsole |-xdm-+-X

| `-xdm---Xsession---fvwm---FvwmPager |-xterm---bash---su---bash---tail |-2*[xterm---bash] |-xterm---bash---pstree \ -ypserv

On voit par exemple ici que j'utilise Fvwmpager qui a lui-mme t lanc par fvwm .

[] kill
La commande "kill" permet d'expdier un signal un processus. Sa syntaxe est la suivante: kill [options] PID Elle est souvent utilise afin d'interrompre un programme sans IHM ou rcalcitrant. Si j'ai lanc un programme donn, par exemple xeyes, un processus sera actif. Si je le lance deux fois, deux processus seront actifs, et ainsi de suite.... Pour demander un processus de cesser de fonctionner (on parle de le tuer), je peux d'abord invoquer ps auxw pour connatre son PID, si par exemple le PID est 592, le tuer en invoquant kill 592
[delcros@mistra ~]# ps auxw|grep xeyes 592 0.6 0.0 5884 1792 pts/2 596 0.0 0.0 3940 780 pts/2 S S+ 10:53 10:53 0:00 xeyes 0:00 grep xeyes

La premire colonne prsente le PID et la dernire le nom du programme invoqu. La seconde ligne, ici, correspond au grep invoqu, qui se voit ainsi lui-mme. Seul l'utilisateur auquel le processus appartient (ou root) peut le tuer. La commande killall tue un processus mais au lieu de fournir son PID vous indiquerez son nom (la commande qui le lana). Si plusieurs processus y correspondent vous tentez ainsi de tous les tuer, mieux vaut utiliser l'option "-i" (pour interactif) qui demande confirmation avant de tenter d'arrter un processus. Un processus peut se trouver dans un tat ne permettant pas de lui demander de s'interrompre. Tenter en ce cas de lui expdier le signal HUP puis INT en invoquant par exemple "kill -HUP PID". S'il fait la sourde oreille demander au noyau de le tuer sans condition en lui expdiant KILL (KILL est ici le libell d'un signal). Attention: le signal KILL ne laisse pas le processus ainsi condamn prendre des dispositions parfois souhaitables ou ncessaires, par exemple fermer un fichier, donc peut endommager ou perdre des donnes voire causer des dysfonctionnements.

[] Redirection (des entres/sorties d'excutables)


Lorsque vous saisissez des donnes mesure reues par un processus vous fournissez des lments traiter, appels entres, grce au clavier. L'activit des processus produit des sorties (rsultats), le plus souvent par dfaut affichs. L'entre de donnes peut se faire par un canal autre que le clavier, en indiquant par exemple un fichier qui contient les donnes traiter. Le canal de sortie peut lui aussi tre dirig ailleurs que vers l'cran, par exemple vers un fichier dont on pourra ensuite continuer a traiter le contenu. On peut galement recevoir ou expdier des donnes chacun des priphriques connects, auquel correspond un fichier spcial dans le rpertoire /dev . Le shell offre un moyen de grer tout cela, en interconnectant loisir ces canaux, grce aux redirections.

Comment faire, par exemple, pour que la commande less, qui affiche le contenu d'un fichier, le place plutt dans un fichier? C'est le signe > qui va nous permettre cela. Dans un premier temps, je veux voir le contenu du fichier nomm test : less test. La commande less affiche son rsultat vers la sortie standard qui est le terminal. Dans un deuxime temps, je veux placer le fichier test dans un fichier test2 : less test > test2. Ce n'est qu'une copie du fichier "test" en "test2". La commande cp permet aussi de le faire. Plusieurs types de redirections existent: > nom_de_fichier redirige vers le fichier nomm ce que produit le programme. Exemple: ls > ls.txt >> nom_de_fichier permet comme le signe ">" de rediriger le canal de sortie standard vers le fichier nomm. Si ce dernier existe dj, ce qui provient du canal de sortie sera ajout aprs ce qui y existe dj alors qu'avec un simple ">" le contenu existant serait remplac (cras) < nom_de_fichier redirige le canal d'entre standard, qui devient le contenu du fichier nomm. Exemple: less < ls.txt . Cela revient apparemment ce que montre less ls.txt mais est subtilement diffrent car interdit less d'accder directement au fichier en demandant au shell d'en copier le contenu sur le canal d'entre standard de less, qui ne pourra savoir d'o il vient &> nom_de_fichier redirige sortie standard et erreur standard vers un seul et mme fichier Ce sont les formes les plus frquemment employes. Toutes ces formes sont des versions simplifies. Pour matriser tout cela il faut savoir que l'entre standard dans un systme Unix est le clavier, dsign par le descripteur de fichier numrot "0". Par dfaut le terminal est la sortie standard, ce descripteur de fichier est dsign par le chiffre "1". Il existe un troisime descripteur de fichier classique qui est le canal de sortie des erreurs produites par l'excution d'une commande, dsign par le chiffre "2". Dans les exemples suivant la lettre n remplace l'un de ces chiffres: n> nom_de_fichier redirige ce qui sort via le descripteur n (vers le fichier nomm). Par exemple, si vous souhaitez obtenir les erreurs standards (donc le canal 2) dans un fichier nomm monprogramme.err: nom_de_commande 2> monprogramme.err n< nom_de_fichier dclare le fichier nomm comme correspondant au descripteur >&n duplique la sortie standard vers le fichier correspondant au descripteur n <&n duplique l'entre standard depuis le fichier correspondant au descripteur n premire vue, on se demande bien quoi servent certaines des redirections... On le dcouvre en employant le shell. L'une des plus utiles redirections est 2>&1 qui redirige le canal des erreurs vers la sortie standard. Elle est trs apprcie des utilisateurs lorsqu'ils souhaitent conserver la liste des messages d'erreur produits par un programme: nom_du_programme 2>&1 erreursnom_du_programme.tmp

Les canaux sont autant de tuyaux vhiculant les donnes, que l'on peut assembler librement grce aux redirections fournies par le shell. Cela mne la plomberie...

[] Interconnexion de commandes: les pipes


Le mot "pipe" dsigne la barre verticale ("|") obtenue avec la combinaison de touches "AltGr + 6" sur les clavier franais classiques, ou "Altgr + 1" sur les claviers franco-belges. Sur la ligne de commande il permet de crer des tubes . Un tube passe le rsultat d'une commande une autre, sans passer par une redirection qui impliquerait un fichier temporaire. Un exemple permettra de comprendre tout cela. Je veux savoir quels sont les processus "bash" qui fonctionnent sur le systme, mais je veux que la commande ps aux ne me fournisse que les lignes qui contiennent le mot "bash" pour m'pargner de lire tout ce qu'elle produit. Avec ce que nous connaissons dj il nous faudrait une premire commande visant obtenir la liste des processus "bash" actifs et la placer dans un fichier temporaire: ps aux > temporaire.tmp . Puis nous pourrions mobiliser grep: grep bash temporaire.tmp afin d'obtenir le rsultat souhait. Il ne resterait plus qu' nettoyer: rm temporaire.tmp. Employer un tube ralise l'quivalent en sollicitant moins le systme, qui n'aura rien stocker temporairement: ps aux | grep bash On peut dire que l'on a lanc un traitement qui connecte les deux commandes (ps et grep) entre elles, de sorte que ce que la premire cite produit soit immdiatement communiqu l'autre. Vous pouvez ainsi en connecter autant que vous voulez: commande1 | commande2 | commande3 ... | commandeN Si on prend conscience de l'utilit des tubes, on les utilise et on finit par ne plus vouloir s'en passer.

[] Lien (ln)
Un lien est un type spcial de fichier qui permet plusieurs noms de fichiers de faire rfrence au mme contenu sur le disque. Ce sont des sortes de synonymes , d'aliases. On en distingue deux sortes: dur et symbolique . Un lien dur associe deux ou plusieurs fichiers un mme espace sur le disque, en prservant toutefois leurs indpendances lors de modifications de leurs contenus. Exemple: crons un fichier (dont le contenu importe peu) nomm linux-test grce echo toto > linux-test Puis crons un lien dur vers ce fichier: ln linux-test linux-test-lien-dur Le fichier linux-test-lien-dur est cr dans le rpertoire courant. Si vous faites un ls -l vous constaterez que linux-test et linux-test-lien-dur ont la mme taille. Ils semblent indpendants mais en ralit un seul contenu (commun aux deux) existe pour le moment. Si le fichier linux-test-lien-dur est modifi, nous aurons automatiquement une modification du fichier linux-test (et vice-versa), car elle s'effectuera physiquement sur le disque dur l'endroit stockant le contenu des deux fichiers.

Si nous crons un lien symbolique: ln -s linux-test linux-test-lien-symb ls -l montrera le nom du fichier linux-test-lien-symb suivi d'une flche rvlant qu'il pointe sur linux-test . Toute rfrence au fichier linux-test-lien-symb impliquera en ralit le fichier linux-test . En rsum un lien symbolique est un fichier de petite taille qui a une existence propre et contient le nom du fichier auquel il correspond. Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre. Dans le cas d'un lien symbolique, la suppression du fichier originel (la cible du lien) rendra le lien symbolique inutilisable car il ne correspondra plus un fichier valide et sera donc dit "cass" (pendouillant). Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs rpertoires, ou sous un nom diffrent. Si le fichier est encombrant une copie par cp entranerait un gchis alors qu'un lien permettra de rduire l'utilisation d'espace disque. Mieux: n'tablir que des liens (au lieu de copier) garantit que toute modification concernera toutes les copies disperses. Syntaxe: ln nom-fichier-source nom-fichier-lien Arguments: -s cre un lien symbolique. Dans la plupart des cas c'est ce qui est adquat, le lien dur est en fait rarement employ. -b ralise une sauvegarde d'un fichier existant et dont nous aurions utilis le nom, avant de l'craser. -i demande l'utilisateur, si le lien existe, s'il souhaite l'craser.

[] Alias (alias)
Lorsque l'on utilise les mmes commandes avec de nombreuses options fixes il est utile de remplacer le tout par un ordre trs court dclar comme une sorte de synonyme. Il est appel alias . Les alias sont dclars dans le fichier ~/.bashrc_aliases (lui-mme sourc par ~/.bashrc ). Voici un exemple classique de dclaration d'alias: alias ll="ls -NlF -color=auto", qui cre une commande ll appelant ls avec des options amliorant la prsentation. La variable "$*" dsigne tous les paramtres communiqus lors de l'appel de l'alias:
$ alias perroquet="echo $*" $ perroquet ceci est un test ceci est un test $ perroquet autre bidule autre bidule

Plutt que de saisir souvent tar -tvzf nom_de_fichier ou pourra ainsi prfrer crer un alias: alias montar="tar -tvzf $*" , puis employer montar nom_de_fichier La commande unalias supprime de faon dfinitive un alias. Son option -a (pour all) commande suppression de tous les alias.

Certains alias sont dclars dans des fichiers excuts par bash lors de son dmarrage, par exemple ~/.bashrc . En ce cas il faut commenter la ligne dfinissant l'alias dans le dit fichier pour le supprimer dfinitivement, sinon il ne le sera que durant la session en cours. On peut automatiser de faon plus ambitieuse.

[] Pour aller plus loin


La commande man est utile. Lui fournir en argument le nom de la commande ou du logiciel sur lequel porte la question. Exemple: man cp. Pour quitter le man appuyer sur la touche "q".

Arborescence Linux Introduction la programmation en bash En cas de blocage, problme...

Rcupre de http://wiki.linux-france.org/index.php?title=Les_commandes_fondamentales_de_Linux&oldid=452 Catgories :

bash pour dbutant premier auteur:Armand Delcros

Affichages

Page Discussion Modifier Historique

Outils personnels

Crer un compte Connexion

Navigation

Accueil Communaut Actualits Modifications rcentes Page au hasard Aide

Rechercher Bote outils

Pages lies Suivi des pages lies Pages spciales Version imprimable Adresse de cette version

More Sharing ServicesShare on facebookShare on twitter Share on email

Dernire modification de cette page le 4 avril 2013 12:21. Sous licence GNU Free Documentation License 1.3 Politique de confidentialit propos de Linux France Avertissements

Vous aimerez peut-être aussi