Linux - Vev

Linux

Un article de Vev.

(Différences entre les versions)
Jump to: navigation, search
Version du 21 décembre 2007 à 18:13
Mikayé (Discuter)
(clean up AWB)
← Différence précédente
Version actuelle
Vev (Discuter | contribs)
(Déclarer qui est propriétaire d'un fichier ('''chown'''))
Ligne 1: Ligne 1:
-{{ Infobox Système d'exploitation+*http://www.siteduzero.com/tutoriel-3-12827-reprenez-le-controle-a-l-aide-de-linux.html#part_12826
-| nom = Linux+*http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux
-| logo = +
-| image = [[Image:Gnulinux.png|150px]]+
-| description = Les différents [[logotype|logos]] et [[mascotte]]s qui composent Linux : [[GNU]], [[Noyau Linux]]+
-| famille = [[Systèmes Unix]]+
-| état des sources = +
-| dernière version = {{Dernière version stable/Noyau Linux}} ([[Noyau Linux]])+
-| date de la dernière version = +
-| type de noyau = [[Noyau de système d'exploitation#Noyaux monolithiques modulaires|Noyau modulaire]] (depuis la version 2.0)+
-| licence = [[Licence publique générale GNU]]+
-| état du projet = en développement+
-}}+
-{{Portail}}+
-'''Linux''' est un [[Noyau de système d'exploitation|noyau d'OS]] souvent confondu avec le [[système d'exploitation]] du même nom dérivé de [[UNIX]]. C'est l'un des plus notoires exemples de logiciels [[logiciel libre|libres]] ; l'intégralité de son [[code source]] est en effet modifiable, utilisable et redistribuable librement par quiconque.<ref>{{Lien web | titre = Linux Online ─ About the Linux Operating System | url = http://www.linux.org/info/index.html | éditeur = Linux.org | consulté le = 2007-07-06 }}</ref> Il se présente à l'utilisateur final sous la forme d'une [[distribution Linux|distribution]] contenant le noyau Linux et un ensemble de [[logiciel]]s. [[Liste des distributions Linux|Certaines distributions]] sont conçues pour un usage généraliste, d'autres pour usage spécialisé.+* [http://www.kernel.org/ Linux kernel website and archives]
 +* [http://www.linuxmark.org/ The Linux Mark Institute] (manages the Linux trade mark)
 +* [http://www.linux-foundation.org/ The Linux Foundation]
 +* [http://www.gnu.org/ GNU Project website]
 +* [http://www.google.com/options/specialsearches.html Google Linux Search].
 +* [http://linuxzoo.net/ linuxzoo] Online Linux system with root access.
 +* [http://www.makelinux.net/reference Linux Technology Reference]
-Le '''[[noyau Linux]]''' a pour la première fois été mis à disposition du public le {{Date|17|septembre|1991}}. Il ne fonctionnait alors qu'avec les [[processeur]]s de type [[X86]]. Il fut ensuite enrichi de [[programme]]s et de [[bibliothèque logicielle|bibliothèques logicielles]] issus du [[projet GNU]] afin de former un système d'exploitation utilisable. Cette combinaison du noyau ('''Linux''') et des programmes qui l'entourent (issus du projet GNU) suggère l'utilisation du terme '''GNU/Linux''' pour désigner formellement le système d'exploitation '''Linux'''. Toutefois, l'utilisation de ce terme est rare.+[[apt://vlc]]
-Originellement développé pour les [[compatibles PC]], '''Linux''' est utilisé sur tout type de matériel, du [[téléphone portable]] au [[superordinateur]]. Son premier marché est celui des [[serveur informatique|serveurs informatiques]], suivi par les [[systèmes embarqués]]. Sa part d'utilisation sur [[ordinateur personnel]] est de l'ordre du pourcent. La mascotte de '''Linux''' est [[Tux]], un [[manchot]]. 
-{{Systèmes d'exploitation}} 
-== Histoire == 
-=== Autour de la naissance de Linux=== 
-En [[1991]], les [[compatibles PC]] dominent le marché des [[ordinateurs personnels]] et fonctionnent généralement sous les [[systèmes d'exploitation]] [[MS-DOS]], [[Windows]] ou [[OS/2]]. Le [[microprocesseur]] [[Intel 80386]], vendu depuis [[1986]], commence à être abordable. En 1991, aucun de ces trois systèmes n'exploite les capacités 32 [[bit]]s du 80386. 
-Le projet [[GNU]] est connu pour avoir produit de nombreux [[logiciels libres]], dont des [[commandes Unix]], l'[[éditeur de texte]] [[Emacs]] et le [[compilateur]] [[C (langage)|C]] [[GNU Compiler Collection|GCC]]. Ces logiciels sont généralement utilisés sur des [[stations de travail]] fonctionnant sous [[UNIX]], car le [[noyau de système d'exploitation]] [[Hurd]] n'est qu'à l'état de projet.+= Introduction =
-En [[juin 1991]], la [[Berkeley Software Distribution]] (BSD) sort la Networking Release 2 (Net/2), qui constitue un système UNIX BSD presque complet. Mais un procès lancé par [[Unix System Laboratories]] contre [[Berkeley Software Design]] fait peser des doutes sur le statut de cette distribution pendant presque deux ans.+* Premier auteur (jusqu'à 1998): Armand Delcros
 +* [[wikiser|Wikisé]] par (2009): [[User:Natmaka|Nat Makarevitch]]
-Le système d'exploitation [[Minix]] est développé par le professeur [[Andrew Tanenbaum]] pour l'enseignement. Il est inspiré de [[UNIX]], gratuit, ses sources sont disponibles mais non libres, et la simplicité est privilégiée par rapport aux performances.+== Contributions et remerciements ==
-=== 1991 : naissance du noyau Linux ===+* [[User:Natmaka|Nat Makarevitch]] pour ses nombreuses critiques et corrections,
-[[Image:Linus Torvalds.jpeg|thumb|left|[[Linus Torvalds]] initiateur et aujourd'hui coordinateur du [[noyau Linux]]]]+* Thomas Ortega pour ses bienveillantes remarques et la remise en forme [[HTML|HTML]] du document,
-En [[1991]], l'étudiant finlandais [[Linus Torvalds]], qu'indisposait la faible disponibilité du serveur UNIX de son université à [[Helsinki]], entreprend d'écrire un [[noyau de système d'exploitation]] qu'on appellera plus tard « [[noyau Linux]] ».+* Kim Ashue pour sa relecture,
 +* Philibert de Mercey pour son aide à la mise en page.
-Linus Torvalds fait alors son apprentissage sur le [[système d'exploitation]] [[Minix]]. Comme l'auteur de Minix refuse les contributions visant à améliorer Minix, Linus gagne la motivation nécessaire pour en écrire un remplaçant. Il commence par développer un simple émulateur de [[Terminal informatique|terminal]], qu'il utilise pour se connecter via [[modem]] au [[serveur informatique]] de son université. Linus désire alors surtout comprendre le fonctionnement de son ordinateur, un [[compatible PC]] basé sur un [[microprocesseur]] [[Intel 80386]]. Après l'ajout de diverses fonctionnalités dont un [[système de fichiers]] compatible avec celui de Minix, Linus oriente son projet vers quelque chose de plus ambitieux : un noyau aux normes [[POSIX]].+L'objectif de ce document est d'enseigner les [[commande|commandes]] fondamentales de [[Linux|Linux]] (et donc d'[[Unix|Unix]]).
-Le {{Date|5|octobre|1991}}, il annonce sur le forum [[Usenet]] news:comp.os.minix la disponibilité d'une ébauche version 0.02 de son système d'exploitation, la version 0.01 ayant eu une diffusion plus que confidentielle. ''Le message en question ainsi que sa traduction sont disponibles sur [[s:Naissance de Linux|wikisource]].''+= Objectifs =
-Depuis, des centaines de passionnés et des entreprises, petites ou géantes, sont venus participer au projet dont [[Linus Torvalds]] est toujours le coordinateur. [[Eric S. Raymond]] décrit dans un essai retentissant<ref>[http://www.linux-france.org/article/these/cathedrale-bazar/cathedrale-bazar.html la cathédrale et le bazaar], d'Eric S. Raymond.</ref> le modèle de développement du noyau Linux et d'une partie des [[logiciel libre|logiciels libres]].+Nous allons explorer ce qu'offre le [[shell|shell]] le plus commun sous Linux, donc une partie de ce que peut faire un utilisateur capable de diriger la machine en créant des [[ligne de commande|lignes de commandes]] plutôt qu'en se contentant d'un [[cliquodrôme|cliquodrôme]].
-Initialement appelé ''[[Freax]]'' par son créateur, le projet trouve son nom définitif grâce à [[Ari Lemmke]]<ref>D'après Lars Wirzeniu dans une présentation donnée en 1998 : [http://liw.iki.fi/liw/texts/linux-anecdotes.html Linux Anecdotes]</ref>, administrateur du serveur [[File Transfer Protocol|FTP]] ''ftp.funet.fi'', qui héberge le travail de Linus Torvalds dans un répertoire nommé ''Linux''. C'est la première apparition d'un terme composé à partir de ''Linus'' et ''UNIX'', qui deviendra par la suite une marque déposée au nom de Linus Torvalds. Le manchot [[Tux]], dessiné par [[Larry Ewing]] en 1996, devient le symbole du projet.+= Manœuvres préliminaires =
-=== Diffusion de GNU/Linux ===+Employer, pour explorer, une machine sans importance, dont l'arrêt ou la destruction du contenu ne poserait aucun problème.
-Parmi les étapes marquantes, on peut d'abord citer le lancement en [[octobre 1996]] par [[Matthias Ettrich]] de l'[[environnement graphique]] [[KDE]] puis en [[août 1997]] par [[Miguel de Icaza]] de son concurrent [[GNOME]], les deux étant basés sur le système de fenêtrage [[X11]] issu des travaux du [[Massachusetts Institute of Technology]]. Dans l'iceberg qu'est un [[système d'exploitation]] grand public basé sur le [[noyau Linux]], les environnements de bureau, comme [[GNOME]], [[KDE]] ou encore [[XFCE]] en forment la partie émergée, en contact direct avec l'utilisateur.+Recommandation: employer un [http://bellard.org/jslinux/ émulateur de PC en Javascript animant Linux publié en http://bellard.org/jslinux/]. Cliquer sur le lien conduit directement à une ''machine logicielle'' grâce à laquelle vous utiliserez immédiatement Linux. Merci F. Bellard!
-Il y a également la prise en compte progressive de l'intérêt commercial de Linux dont on peut citer quelques manifestations spectaculaires : le lancement en [[février 1998]] de l'[[Open Source Initiative]] ; l'annonce en [[juillet 1998]] du support d'[[Oracle Corporation]] qui porte et supporte sa célèbre [[base de données]] sous Linux ; l'entrée en bourse de [[Red Hat]] le {{Date|11|novembre|1999}} ; celle de [[VA Linux]] le mois suivant qui marque le sommet d'une impressionnante [[bulle spéculative]] ; le support massif apporté par le géant [[International Business Machines Corporation|IBM]] qui y dépense des milliards de dollars, emploie [[en 2005]] près de 300 développeurs du [[noyau Linux]], et organise à partir de [[2003]] la riposte légale lors de l'attaque du [[SCO Group]] qui affirmait posséder les droits d'auteurs du [[noyau Linux]] (''voir l'article [[SCO contre Linux]]'') ; l'acquisition en octobre et [[novembre 2003]] de [[Ximian]] puis de [[SuSE]] par le géant américain [[Novell]]<ref>[http://www.redhat.com/en_us/USA/home/company/companyprofile/history/ La chronologie de RedHat Linux]</ref>.+L'[[amorcer|amorcer]] sous Linux, par exemple grâce à un [[live-CD|live-CD]].
-GNU/Linux est aujourd'hui utilisé dans de nombreux domaines, des [[systèmes embarqués]] aux [[superordinateur]]s en passant par les serveurs avec notamment le très populaire [[LAMP]]. Sa part de marché sur les postes clients est faible, les diverses estimations étant comprises en général entre 0,3&nbsp;% et plus de 3&nbsp;% en fonction des méthodes de relevé et de calcul. Ce chiffre est en réalité difficilement estimable, car d'une part, de nombreux [[navigateur Web|navigateurs Web]] modifient leur identité par défaut (ou à la demande de l'utilisateur) afin de ne pas être gênés par les [[Site Web|sites Web]] bloquant les navigateurs autres qu'« [[Internet Explorer]] tournant sur [[Microsoft Windows]] », et d'autre part, il est fréquent qu'un utilisateur Linux configure son système de manière à ce qu'il ne communique pas ces informations, car elles pourraient permettre de faciliter la recherche de failles éventuelles par un pirate.+<center>'''REMARQUE : [[sous|SOUS]] LINUX (comme sous tout système UNIX) LES MINUSCULES ET LES MAJUSCULES NE SONT PAS ÉQUIVALENTES.'''</center>
-== Principes et idéologie ==+= Commandes fondamentales =
-=== Logiciel libre ===+
-{{Article détaillé|Logiciel libre}}+
-[[Image:Copyleft.svg|thumb|Logo [[copyleft]] (« gauche d'auteur ») : certains droits réservés]]+
-La principale originalité de Linux par rapport à d'autres systèmes d'exploitation concurrents comme [[Microsoft Windows]], [[Mac OS]], ou les autres [[UNIX]] [[Logiciel propriétaire|propriétaires]] est d'être constitué d'un [[Noyau Linux|noyau]] libre et de [[logiciels libres]].+== Mise en place ==
-Un logiciel libre n'est pas nécessairement un logiciel gratuit, et inversement tout logiciel ''non-commercial'' n'est pas forcément libre. Ce ne sont pas non plus des ''logiciels libres de droits'' : c'est en vertu de leurs droits d'auteurs que les contributeurs d'un logiciel libre accordent les [[Logiciel libre#Free Software Foundation (FSF), projet GNU|quatre libertés]], qui sont d<nowiki>'</nowiki>''utiliser le logiciel sans restriction'', d'''étudier le logiciel'', de le ''modifier pour l'adapter à ses besoins'' et de le ''redistribuer sous certaines conditions précises''.+La plupart des [[distribution|distribution]]s Linux démarrent d'emblée, sitôt le système [[amorçage|amorcé]], une [[interface graphique|interface graphique]] fournie par un ensemble logiciel appelé [[X Window|X Window]] et donnant à l'écran d'accueil une apparence agréable dont voici un exemple (cliquer sur l'image pour zoomer):
 +[[Fichier:Ubuntu_9.04_Jaunty_Jackalope_(login screen).png|frameless|center]]
-Certaines licences sont basées sur le principe de [[copyleft]], c'est-à-dire de réciprocité : une œuvre dérivée d'un logiciel sous copyleft doit à son tour être libre. C'est le cas de la licence libre la plus utilisée, à commencer par le [[noyau Linux]] lui-même : la [[Licence publique générale GNU|licence GNU GPL]] écrite par [[Richard Stallman]].+Si [[X Window|X Window]] n'est pas démarré vous ne verrez aucune [[fenêtre|fenêtre]] et surtout des caractères, quasi pas de graphisme sauf peut-être un [[Tux|Tux]] en haut à gauche, du charabia terminé par la mention « [[login|login]]: » suivie d'un [[curseur|curseur]] clignotant:
 +[[Fichier:Debian boot.png|frameless]]
-L'ouverture du [[code source]], l'un des quatre critères correspondant à la notion de [[logiciel libre]], a des avantages théorisés entre autres par [[Eric Raymond]] en matière de correction rapide des [[Bogue (informatique)|bogues]] qui sont la plaie de l'informatique, et notamment la correction des [[faille de sécurité|failles de sécurité]]. C'est le refus du principe de [[sécurité par l'obscurité]].+Connectez-vous au système en tant qu'utilisateur [[root|root]], donc saisir ''root'' en guise de «login», puis le mot de passe («Password») adéquat (qui a été défini lors de l'installation ou est fourni par la documentation).
-=== Interopérabilité ===+Si la machine emploie [[X Window|X Window]] explorez les menus afin de démarrer un « terminal » (peut-être appelé « Terminal », « Konsole », « KTerm », « Gnome terminal », « xterm », « rxvt »...), par exemple via le menu «Applications», «Accessoires» ou «Système».
-Linux n'aurait pu se développer sans la présence de protocoles standardisés utilisés sur [[Internet]]. Un bon nombre de logiciels libres sont d'ailleurs des implémentations de référence, comme [[Apache HTTP Server|Apache]].+Vous vous retrouvez devant le [[shell|shell]], qui est un logiciel grâce auquel vous pourrez passer des [[commande|commandes]], par exemple afin de démarrer des logiciels. Plusieurs shells existent, le plus répandu est nommé [[bash|bash]] ([[csh|csh]] et [[zsh|zsh]] en sont d'autres).
-Les partisans des logiciels libres sont donc des partisans constants de l'[[interopérabilité]]. Ils mettent en avant les [[format ouvert|formats ouverts]], des formats de données dont les spécifications techniques sont publiques et sans restriction d'accès ni de mise en œuvre, afin de ne pas dépendre d'un seul logiciel.+Ce que vous voyez est son [[invite|invite]].
-Citons dans cette optique [[Mozilla Firefox]] qui tente de respecter scrupuleusement<!--le test ACID2 n'est pas vraiment concluant...--> les recommandations émises par le [[World Wide Web Consortium]], [[Jabber]] qui a donné naissance au standard [[Extensible messaging and presence protocol|XMPP]] reconnu par l'[[Internet Engineering Task Force]] dans le domaine de la [[messagerie instantanée]] ou encore les suites [[OpenOffice.org]] et [[KOffice]] qui ont lancé le récent standard [[OpenDocument]] dans le domaine de la bureautique.+== Arrêter le système ('''shutdown''') ==
-Dans d'autres domaines, il n'existe pas d'organisme ou d'accord de standardisation reconnu. Le marché est alors morcelé entre divers vendeurs qui ont chacun leur technologie ou sous la domination d'un acteur économique prédominant qui ferme ses [[Format ouvert|formats]] ou [[Protocole de communication|protocole]]s.+Ne jamais éteindre brutalement la machine, il FAUT INFORMER Linux de votre souhait de l'arrêter afin qu'il prenne les dispositions nécessaires. Pour cela [[invoquer|invoquer]], sous le [[compte|compte]] [[root|root]]:
 +;shutdown -r now:[[réamorcer|réamorce]] immédiatement l'ordinateur.
 +;shutdown -h now:arrête complètement le système. Vous pouvez éteindre l'ordinateur lorsque sera affiché:
 + System halted
 + The system is halted
-Le premier cas de figure prévaut dans la guerre des [[messagerie instantanée|messageries instantanées]] et est réglé par des logiciels multiprotocoles comme [[Pidgin (logiciel)|Pidgin]] ou [[Kopete]]. Les formats des suites [[Microsoft Office]] successives et le protocole [[Common Internet File System]] qui permet de partager fichiers et imprimantes entre différents ordinateurs d’un réseau [[Microsoft Windows]] tombent dans la deuxième catégorie. Ces formats et protocoles sont souvent pas ou mal documentés. L'[[interopérabilité]] passe alors nécessairement par la [[rétro-ingénierie]].+;shutdown -h +15:arrête complètement et automatiquement le système 15 minutes plus tard.
-Cela peut nécessiter un travail titanesque, par ailleurs illégal aux États-Unis mais légal en Europe (tant qu'on reste dans le cadre de l'interopérabilité) ; aujourd'hui, [[OpenOffice.org]] permet de lire la très grande majorité des fichiers aux différents formats ''.doc'', et le logiciel [[Samba (informatique)|Samba]] permet de participer aux réseaux Windows.+== '''echo''' et variables ==
-Plus problématiques du point de vue des [[logiciels libres]] sont les formats et protocoles nécessaires à l'interopérabilité, mais verrouillés techniquement et/ou légalement : [[gestion des droits numériques]], [[brevet logiciel|brevets logiciels]], [[Directive EUCD]], [[Digital Millennium Copyright Act]]…+La commande de shell '''echo $SHELL''' fournit le nom du shell courant. La saisir, puis soumettre grâce à la touche « [[Entrée|Entrée]] », évidemment! En pratique '''echo''' est la commande proprement dite et "$SHELL" l'[[argument|argument]] que nous lui fournissons, qui précise sur quoi elle doit travailler. Les arguments suivent la commande et lui indiquent ce qu'elle doit faire, sur quoi, comment... '''echo''' se contente de répéter les arguments qui lui sont fournis, de sorte que '''echo toto''' affiche "toto" et '''echo titi tutu''' affiche "titi tutu":
-Unifix Linux 2.0 de la société allemande Unifix (et Linux-FT de Lasermoon) sont également certifiés [[POSIX]].1 FIPS 151-2<ref>[http://www.debian.de/doc/manuals/debian-faq/ch-compat.fr.html Page Debian parlant d'Unifix et de son dérivé LINUX-FT]</ref><ref>{{en}}[http://www.ukuug.org/newsletter/linux-newsletter/linux@uk21/posix.shtml POSIX.1 (FIPS 151-2) Certification de LINUX-FT]</ref> (Federal Information Processing Standard<ref>{{en}} [[:en:Federal Information Processing Standard|Federal Information Processing Standard]]</ref>). Noyau 1.2.13<ref>{{en}} [http://www.ukuug.org/newsletter/52/news@uk52-1.shtml The 1.2.13 kernel certified POSIX.1 Kernel 1.3.59 passed certification tests]</ref>+« $SHELL » désigne le contenu d'une [[variable|variable]] (c'est ce que le signe dollar placé en préfixe révèle) nommée « SHELL ».
-Sur le site [[Debian]], ils expliquent {{citation|les normes de POSIX ne sont pas gratuites et la certification POSIX.1 (et FIPS 151-2) est très chère}}<ref>[http://www.debian.de/doc/manuals/debian-faq/ch-compat.fr.html Page du site Debian parlant de la certification POSIX].</ref>+'''echo $SHELL''', par conséquent, affiche le contenu d'une variable nommée « SHELL ».
-=== Communautés ===+== Se déplacer dans l'arborescence de répertoires ('''cd''') ==
-De nombreuses associations, connues sous le nom de [[Linux Users Group]], Groupe d'Utilisateurs Linux (LUG ou GUL), cherchent à promouvoir Linux et par extension, les logiciels libres, par le biais de rencontres où des démonstrations de Linux sont faites, des formations, et pour ceux qui le souhaitent des installations sur leur ordinateur.+Nous traiterons d'un shell nommé [[bash|bash]].
-De nombreuses communautés existent sur [[Internet]] afin d'aider les débutants comme les professionnels. Citons le site [http://lea-linux.org lea-linux], le site d'informations collaboratif [[Linuxfr.org]] et le site [http://www.linux-quebec.org/ Linux-Québec], qui aide les utilisateurs québécois comme français dans leur apprentissage des bases de Linux grâce à un réseau [[IRC]] très actif. Et les projets [http://www.linux-france.org/article/proselux/proselux.html Proselux] et [http://parrains.linux.free.fr Parrains.Linux] permettent aux linuxien(ne)s de se rencontrer pour s'entraider.+Son prompt, [[paramètrer|paramétrable]], ressemble souvent à ceci : ''[root@mistra /root]$'' (''mistra'' est le nom de ma machine). Le premier '''root''' signifie que vous vous êtes connecté sous le [[compte utilisateur|compte utilisateur]] de l'[[administrateur système|administrateur système]]. Vous êtes donc en pleine possession de la machine, vous pouvez faire absolument n'importe quoi, jusqu'à supprimer des [[fichier|fichier]]s nécessaires à son fonctionnement... faites donc très attention... En théorie il ne faut utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits « d'utilisateurs » permettent sinon de travailler en temps normal sans risquer de mettre le système en panne en cas d'action inconsidérée, de « mauvaise manipulation ». Nous exposerons ci-après comment créer un compte utilisateur.
-== Distributions ==+Dans le prompt ''[root@mistra /root]$'' la mention '''/root''' exprime que vous vous trouvez dans un [[répertoire|répertoire]] nommé « /root ». Sous Unix un répertoire n'est pas essentiellement différent d'un fichier, vous lirez ou entendrez donc souvent le mot « fichier » utilisé pour désigner un objet à la nature non déterminée qui peut être un fichier ou un répertoire.
-{{Article détaillé|Distribution Linux}}+
-[[Image:Distribution Linux2.svg|right|350px|thumb|Composants d'une [[distribution Linux]]]]+Tout fichier (ou répertoire...) se trouve à un endroit précis, appelé son [[chemin d'accès|chemin d'accès]], constitué de la série des noms des répertoires qui y mènent, suivie de son nom. Les noms des répertoires y sont séparés par le caractère réservé à cet effet nommé « barre oblique » et plus communément appelé [[slash|''slash'']] (sous Windows ou MS-DOS c'est le caractère "[[anti-slash|anti-slash]]", "\", qui est utilisé à cet effet). Le tout premier répertoire, présent sur tous les systèmes, est appelé « / » et tous les autres y prennent plus ou moins directement [[racine|racine]]). Si un répertoire nommé « répertoire1 » contient un répertoire appelé « répertoire2 » recelant lui-même un fichier « monfichier » le chemin complet de ce dernier est « /répertoire1/répertoire2/monfichier ».
-[[Image:59416-linuxdistrotimeline-7.5.svg|right|350px|thumb|Ligne temporelle des distributions Linux]]+
-Les logiciels libres sont produits de manière collaborative, souvent indépendamment les uns des autres, et peuvent être librement redistribués. Il s'en suit une particularité du monde Linux : la séparation entre ceux qui produisent les logiciels et ceux qui les distribuent.+Actuellement, donc, vous vous trouvez connecté sous le compte de l'administrateur système et dans le [[répertoire|répertoire]] appelé « /root ».
-On appelle ''[[distribution Linux]]'' une solution prête à être installée par l'utilisateur final comprenant un noyau Linux, des programmes d'installation et d'administration de l'ordinateur, un mécanisme facilitant l'installation et la mise à jour des logiciels comme [[Red Hat Package Manager|RPM]] ou [[Advanced Packaging Tool|APT]] ainsi qu'une sélection de logiciels produits par d'autres. +Déplaçons-nous dans la "racine" du système en saisissant ''cd /''.
-Une distribution peut par exemple choisir de se spécialiser (ou non) sur [[GNOME]] ou [[KDE]]. Elle est également responsable de la configuration par défaut du système (graphisme, simplicité…), du suivi de sécurité (installations de mise à jour) et plus généralement de l'intégration de l'ensemble.+Faites bien attention de séparer par un espace '''cd''' et "/" car Unix exige une grande précision. Soumettez la commande au système grâce à la touche « [[Entrée|Entrée]] », évidemment ! En pratique '''cd''' est la commande et "/" l'[[argument|argument]] que nous lui fournissons. Les arguments suivent la commande et sont parfois précédés d'un tiret.
-La diversité des distributions permet de répondre à des besoins divers qu'elles soient à but commercial ou non ; orientée serveur, bureautique ou embarqué ; orientée grand-public ou public averti ; généraliste ou spécialisée pour un usage spécifique (pare-feu, routeur réseau, grappe de calcul…) ; ou encore certifiées sur un matériel donné.+Vous êtes maintenant dans le [[répertoire principal|répertoire racine]] et le prompt devient '''[root@''nom_de_votre_machine'' /]#'''.
-Parmi les plus célèbres distributions, on peut citer la [[Slackware]] qui est la première distribution Linux apparue en [[1992]], toujours activement maintenue par [[Patrick J. Volkerding]] ; la [[Debian]], éditée par une communauté de développeurs ; la [[Red Hat]], éditée par l'entreprise américaine du même nom qui participe également au développement de [[projet Fedora|Fedora Core]] ; ou encore la [[SuSE]], à l'origine dérivée de Slackware avec ajout de certains sous-système issus de Redhat, aujourd'hui éditée par la société [[Novell]].+Tapez la commande '''ls''' (''l''i''s''t) afin d'obtenir la liste de son contenu, vous devez obtenir quelque chose comme:
 + bin boot cdrom dev devfs etc floppy home initrd lib lost+found mnt opt proc root sbin sys tmp usr var
 +Si certains fichiers ou répertoires manquent sur votre machine ce n'est pas important.
-De nombreuses autres distributions plus ou moins spécialisées existent, étant pour la plupart dérivées des projets sus-cités. Par exemple voici quelques distributions spécialisées « environnement de bureau » : [[Ubuntu (système d'exploitation)|Ubuntu]], éditée par [[Canonical Ltd]] qui est dérivée de [[Debian]] ; [[Mepis]] également basée sur [[Debian]] ; [[Minislack|Zenwalk]] dérivée de [[Slackware]] ; [[Mandriva Linux|Mandriva]], dérivée de Red Hat, aujourd'hui éditée par la société française de même nom et impliquée dans plusieurs projets libres. Il existe également des distributions dites ''[[LiveCD]]'', dont la plus célèbre est [[Knoppix]], qui offrent la possibilité de démarrer un système d'exploitation Linux complet et d'accéder à de nombreux logiciels à partir du support (CD ou DVD) sans installation préalable sur le disque dur, et sans altérer son contenu. Cette souplesse d'utilisation a fait qu'elles sont devenues un support très populaire de démonstration d’utilisation de Linux, et sont même utilisées comme outils de maintenance système.+Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent simplement appelés « [[binaire|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 répertoire en utilisant la commande '''ls'''.
-== Contrats OEM et détaxe Windows ==+Maintenant allons voir ce que contient le répertoire '''/etc''' (aperçu lorsque nous avons listé le contenu du répertoire racine '''/'''). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans le répertoire racine et nous nous rendons ensuite dans le répertoire '''etc'''; soit nous nous rendons immédiatement dans le répertoire '''/etc'''.
-{{Voir aussi|Vente liée}}+
-Un des enjeux qui se posent pour les distributions Linux est de nouer des partenariats avec des fabricants d'ordinateurs afin qu'il devienne facile de trouver un ordinateur préinstallé sous Linux. Car même si certaines distributions affirment avoir rendu l'installation d'un système Linux aussi simple que celui de ses concurrents, le simple fait d'avoir à être au courant qu'une alternative existe, d'être prêt à accepter des changements dans ses habitudes et d'avoir à installer soi-même le système constitue un désavantage indéniable par rapport à la situation privilégiée dont jouissent les fabricants d'ordinateurs pour [[Microsoft Windows|Windows]] et [[Mac OS X]], le premier par son omniprésence, le second car [[Apple, Inc.|Apple]] est en même temps le fabricant des [[Macintosh]], prééquipés de cet OS. +Méthode n°1 : '''cd /''' (pour se rendre à la racine) puis '''cd etc'''
-À défaut, les usagers de Linux réclament de pouvoir être remboursés, lors de l'achat d'un ordinateur neuf, de la part du prix correspondant au système d'exploitation et logiciels qu'ils n'ont pas l'intention d'utiliser, comme la loi de certains pays le permet<ref>Pour la France, voir les articles [http://www.legifrance.gouv.fr/WAspad/RechercheSimpleArticleCode?code=CCONSOML.rcv&art=L113-3&indice=1 L113-3], [http://www.legifrance.gouv.fr/WAspad/RechercheSimpleArticleCode?code=CCONSOML.rcv&art=L111-1&indice=1 L111-1] et [http://www.legifrance.gouv.fr/WAspad/RechercheSimpleArticleCode?code=CCONSOML.rcv&art=L122-1&indice=1 L122-1] du code de la consommation sur [[Légifrance]]</ref>. Si la société [[Apple, Inc.|Apple]] s'est montrée plusieurs fois coopérative face à de telles demandes, le remboursement de [[Microsoft Windows]] est en général long et difficile. Devant la difficulté d'obtenir ce remboursement basé sur le [[CLUF]], dès 1998, les associations Linuxfrench et [[AFUL]] ainsi que [[Roberto Di Cosmo]] ont lancé en réaction une action pour la ''détaxe Windows''<ref>[http://www.detaxe.org/ Detaxe.org] - Non à la vente liée des logiciels - Oui à l’information des consommateurs</ref>. Fin 2006, une pétition a été lancée contre les [http://www.racketiciel.info/ « racketiciels »], la [[DGCCRF]] a mené des rencontres, et l'[[UFC]] a déposé plusieurs plaintes pour vente liée.+Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire « /etc » en écrivant le [[chemin|chemin]] complet :
-En France, la jurisprudence n'est pas encore fixée puisque seules des juridictions se sont à ce jour prononcées. Néanmoins, les juridictions de proximité de Rennes du {{Date|6|juillet|2006}}<ref>[http://www.davidtate.fr/spip.php?article772 (Juridiction de proximité de Rennes, 06 juillet 2006, RG n° 91-05-000291)]</ref>, ou de Luneville du {{Date|5|juillet|2006}}<ref>[http://www.davidtate.fr/spip.php?article771 (Juridiction de proximité de Luneville, 05 juillet 2006, RG n° 91-05-000057)]</ref> ont conclu à l'absence de vente liée au sens de l'article L 122-1 du code de la consommation. Ces deux juridictions font d'abord remarquer que les consommateurs ont la possibilité de jouir d'une offre suffisamment diversifiée sur le marché pour acheter un ordinateur ne comportant pas de logiciels non souhaités. Ensuite, si les consommateurs veulent tout de même acheter un ordinateur vendu avec une suite de logiciels, ils peuvent en obtenir le remboursement en application du CLUF dans un délai rapide. Il n'existe donc pas de vente liée au sens de l'article L 122-1 du code de la consommation, c'est-à-dire subordonnée à la vente d'une autre produit ou d'un service.+Méthode n°2 : '''cd /etc'''
-Cette situation existe en [[Europe]] et en [[Amérique du Nord]], mais pas dans certains pays d'[[Amérique du Sud]] où les distributions de Linux ont plus de parts de marché que Windows.+... et nous voici directement placés dans le répertoire « /etc ». Nous avons indiqué que pour se rendre dans le répertoire « etc », il fallait d'abord se rendre dans le répertoire racine. Pour ce faire nous avons placé un « / » devant « etc ».
-== Part de marché ==+Lorsque l'on fournit à la commande '''cd''' un « ~ » au lieu d'un chemin, elle nous déplace automatiquement dans notre répertoire personnel, également appelé « répertoire utilisateur » ou « [[home|home]], celui où nous pouvons stocker nos travaux. Si vous êtes l'administrateur système la commande '''cd ~''' vous placera dans le répertoire « /root ». Dans le cas où je suis (je suis loggé en tant qu'utilisateur « delcros ») je vais automatiquement me retrouver dans le répertoire '''/home/delcros'''. Les répertoires des utilisateurs non dotés de [[privilège|privilèges]] se trouvent d'ordinaire sous '''/home'''.
-D'après l'entreprise spécialisée dans les études de marchés IDC, 24% des serveurs et 3% des PCs étaient vendus avec Linux en 2004. +Pour revenir dans votre répertoire personnel '''cd ~''' est la commande orthodoxe, toutefois '''cd''' suffit.
-IDC prévoit que le marché total des ordinateurs Linux sera de 35,7 milliards de dollars en 2008.<ref>[http://www.itfacts.biz/index.php?id=P2438 étude de la part de marché des ventes de machines sous Linux par IDC]</ref>+
-Ces chiffres de ventes ne comptabilisent évidemment pas les entreprises et les particuliers qui choisissent d'installer eux-même Linux après l'achat d'un matériel fourni sans Linux.+
-Une étude de [[XiTi]] réalisée en août [[2007]] sur {{formatnum:19000}} sites Web professionnels donne 95,5% de [[part de marché]] à [[Microsoft Windows|Windows]] (87,8% à [[Microsoft Windows XP|Windows XP]] et 6,5% à [[Microsoft Windows Vista|Windows Vista]]), 3,2% à [[Mac OS X]] et 0,8% à GNU/Linux.<ref>[http://www.xitimonitor.com/fr-fr/equipement-internaute/systemes-d-exploitation-aout-2007/index-1-1-7-107.html statistiques XiTi]</ref>.+== Dans quel répertoire suis-je actuellement ? ('''pwd''') ==
-La méthode utilisée consiste à faire des relevés sur les visites d'un nombre important de sites Web. Dans les champs identifiant le navigateur, sont généralement présentes des informations sur le nom du navigateur, sa version, ainsi que son SE. Ceci ne veut pas dire que 0,8% des ordinateurs du monde sont équipés de GNU/Linux, mais que 0,8% des pages Web vues l'ont été, sans doute, par des ordinateurs dont le système d'exploitation est une version de GNU/Linux. Cette approche, en plus de ce biais, présente un autre problème : il est tout à fait aisé de modifier la présentation de son navigateur, c'est-à-dire de modifier les paramètres identifiant le navigateur. Pendant longtemps, avant le décollage remarqué du navigateur Firefox, il était sage de faire cela pour contourner certains filtres sur certains sites visant à repousser les navigateurs non MS Internet Explorer. Cette pratique ne semble plus d'actualité en 2007 grâce à la percée de Firefox, à la prise de conscience des éditeurs de sites Web et à leurs efforts pour plus d'interopérabilité.+
-Il existe d'autres approches et d'autres sources. Le fabricant de cartes graphiques canadien ATI, largement minoritaire sur le marché Linux en raison du manque de support 3D de ses cartes sur ce système d'exploitation, estime que Linux représente 3% de ses ventes.+Lorsque l'on se déplace dans les répertoires, par défaut 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 même nom court corresponde à plusieurs répertoires bien distincts, donc que seuls les chemins qui y mènent 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.
-Les tableaux statistiques de [[w3schools]] donnent 2,2% de parts de marché pour linux en mars 2002 et 3,5% de parts de marché en février 2007, après un pic à 3,6% fin 2006, début 2007.<ref>{{en}}[http://www.w3schools.com/browsers/browsers_stats.asp OS platform Statisctics] sur w3schools.com</ref>.+Pour connaître le chemin du répertoire où l'on se trouve on utilise la commande '''pwd''' (''p''rint name of current ''w''orking [[directory|''d''irectory]]).
-Il est important de préciser s'il s'agit de la [[part de marché]] des postes client ou serveur.+== Lister le contenu d'un répertoire ('''ls''') ==
-== Interfaces ==+La commande '''ls''' permet d'obtenir beaucoup d'informations sur les fichiers et répertoires.
-=== La ligne de commande ===+
-[[Image:Konsole-FDA1.png|thumb|right|L'invite de commande, très prisée par les experts]]+Déplaçons-nous par exemple dans le répertoire « /bin »: '''cd /bin'''
-De par la filiation avec [[UNIX]], la [[interpréteur de commandes|ligne de commande]] est toujours disponible dans Linux.+Puis demandons liste de son contenu: '''ls'''
-Certaines distributions, notamment celles spécialisées dans les serveurs ou certaines tâches d'administration, utilisent uniquement la ligne de commande, en particulier pour sa faible consommation de ressource, due à l'absence d'[[interface graphique]].+=== Motifs (glob) ===
-Pendant longtemps, de nombreuses opérations de configuration nécessitaient son utilisation, ce qui n'est plus vrai avec les distributions récentes dédiées à l'utilisation familiale.+Nous pouvons demander à '''ls''' de ne lister que les fichiers dont les noms contiennent des caractères donnés. Gagnons le répertoire "/bin": '''cd /bin''' puis demandons par exemple liste des seuls noms de fichiers dont les noms commencent par la lettre "g": '''ls g*'''
-Les aides en ligne mentionnent cependant souvent la démarche à suivre en ligne de commande, même lorsqu'une configuration graphique est possible : cette méthode est plus ''universelle'' dans le monde Linux, et souvent plus facile à expliquer pour la personne qui aide, et son interlocuteur n'a qu'à [[copier-coller]] l'indication.+L'[[argument|argument]] "g*" que nous venons de fournir est un [[motif|motif]], auquel on peut penser comme à une sorte de filet dont les mailles sont définies par nous (utilisateur), en respectant un certain nombre de conventions, et qui est ensuite appliqué (''jeté'') par le shell afin de sélectionner des noms de fichiers qui y correspondent.
-Une interface graphique bien conçue permet de nos jours d'accomplir la grande majorité des tâches bien plus agréablement, mais ce n'est pas toujours le cas, particulièrement lorsque la tâche a un aspect répétitif.+Les principales conventions valides dans ce contexte, donc lorsque l'on définit un motif de sélection de noms de fichiers destiné au shell, sont:
 +* l'étoile (ou plutôt l'[[astérisque|astérisque]]) est un [[caractère générique|caractère générique]] sélectionnant n'importe quel ensemble de caractères
 +* le point d'interrogation sélectionnant n'importe quel caractère
-La ligne de commande, qui tire sa puissance de sa possibilité de combiner à l'infini des sous-tâches automatiques, et qui permet presque naturellement d'automatiser la tâche ainsi accomplie, peut alors se révéler plus efficace que l'interface graphique.+Lorsque nous invoquons '''ls g*''':
 +# dans un premier temps le shell applique le motif (jette le filet) et sélectionne les noms de fichiers du répertoire courant qui correspondent au motif
 +# dans un deuxième temps le shell lance '''ls''' en lui communiquant ce qu'il a sélectionné, donc par exemple (si les seuls fichiers du répertoire courant dont le nom commence par "g" sont « grep », « gunzip », « gzexe » et « gzip »): '''ls grep gunzip gzexe gzip'''
-Scientifiques, ingénieurs et développeurs comptent parmi ses plus fréquents utilisateurs.+Cette interprétation de motif puis sélection des noms de fichiers y correspondant est en anglais appelée "[[glob|glob]]". Elle fonctionne pour toutes les commandes, on peut donc saisir '''echo g*'''... et obtenir le même résultat qu'avec '''ls g*'''.
-Interface graphique et ligne de commande peuvent aussi se compléter l'une et l'autre : [[KDE]] est livré avec un terminal très ergonomique, et offre un mécanisme efficace (''[[DCOP]]'') pour piloter et donc automatiser toutes ses applications graphiques depuis la ligne de commande.+On peut également interdire au shell d'effectuer ce « glob » en plaçant l'argument entre apostrophes. Exemple: '''ls <nowiki>'g*'</nowiki>''', qui produit ici « ls: ne peut accéder g*: Aucun fichier ou répertoire de ce type », car '''ls''' cherche bien entendu alors un fichier nommé "g*" (g suivi d'un astérisque), qui n'existe pas.
-=== Gestionnaires X window ===+'''echo <nowiki>'g*'</nowiki>''', en revanche, fonctionne parfaitement puisque 'g*' devient alors un littéral qui sera traité par '''echo''' comme n'importe quelle autre [[chaîne|chaîne]]... qu'il se contente donc d'afficher, indépendamment de ce que contient le répertoire courant.
-L'emploi du terme générique ''Linux'' est trompeur s'agissant de l'utilisation d'un ordinateur personnel. Il existe en réalité trois interfaces distinctes, aux caractéristiques bien différentes et formant chacune un tout autonome : l'approche traditionnelle centrée autour d'un [[gestionnaire de fenêtres]] d'une part, l'environnement [[KDE]] et l'environnement [[GNOME]] d'autre part. +=== Options ===
-[[Image:Window maker freebsd screenshot.jpg|thumb|Environnement graphique traditionnel ([[WindowMaker]]) sous Linux avec un simple [[gestionnaire de fenêtres]] et une suite hétéroclite d'applications.]]+Voici quelques [[option|options]] intéressantes de la commande '''ls''':
-Traditionnellement l'interface d'un système d'exploitation basé sur le [[noyau Linux]] est une interface sobre voire spartiate, centrée autour d'un [[gestionnaire de fenêtres]] (il en existe de nombreux comme [[Window Maker]] ou [[IceWM]]) et d'une suite assez hétéroclite d'applications.+'''ls -l''' liste les [[attribut|attributs]] de fichiers (les [[droits|droits]] de lecture, d'écriture et d'exécution, le propriétaire, le groupe, la taille en octets, sa date de création ou de modification).
-La fenêtre [[xterm]] permettant une utilisation en ligne de commande n'est en général jamais loin, l'informaticien en appréciant ses puissantes possibilités d'utilisation qui proviennent de la filiation de Linux avec [[UNIX]]. +<code>total 3615
 + -rwxr-xr-x 1 root root 2716 Apr 23 02:09 arch
 + -rwxr-xr-x 1 root root 56380 Dec 23 2008 ash
 + lrwxrwxrwx 1 root root 4 May 10 20:01 awk -&gt; gawk
 + -rwxr-xr-x 1 root root 18768 Mar 8 19:17 basename
 + -rwxr-xr-x 1 root root 300668 Sep 4 2008 bash
 + lrwxrwxrwx 1 root root 3 May 10 19:59 bsh -&gt; ash
 + -rwxr-xr-x 1 root root 16584 Dec 16 2008 cat
 + -rwxr-xr-x 1 root root 17408 Nov 26 2008 chgrp
 +</code>
-L'inconvénient d'un tel système est le temps nécessaire à personnaliser un tel environnement, et surtout la non-standardisation des applications ainsi utilisées. Les applications que l'on peut voir sur la copie d'écran de droite ([[XMMS]], [[RealPlayer]], [[Mozilla Firefox]], [[xterm]], [[Pidgin (logiciel)|gaim]], [[konqueror]]) suivent chacune leurs propres conventions : aspect, comportements, raccourcis claviers différents ; les [[copier-coller]] et glisser-déposer sont aléatoires… +Ici, tous les fichiers appartiennent à l'administrateur système (root) et à son groupe (root). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une flèche visible ici sur la ligne <code>awk -&gt; gawk</code>, dans la [[#Lien_.28ln.29|section consacrée aux liens ln]].
-Si individuellement des applications comme [[vim]] ou [[emacs]] peuvent effectivement avoir des aspects brillants, l'ensemble disparate de toutes ces applications en fait un système difficile à appréhender. Le temps consacré à apprendre une application et les réflexes ainsi acquis ne peuvent être appliqués aux autres applications, un avantage énorme qu'apporte la standardisation de comportement des interfaces comme l'avait montré le [[Macintosh]]. À titre d'exemple, le raccourci clavier utilisé pour quitter une application peut être : ''Ctrl+Q, q, Esc, Ctrl-C+Ctrl-X, Ctrl-C, :qa!, bye, quit, exit…''+'''-a''' liste tous (penser au mot "''a''ll") les fichiers du répertoire, y compris les fichiers cachés. Cette option est très utile lorsque l'on se trouve dans son répertoire personnel car il contient les fichiers de configuration de l'utilisateur dont les noms commencent généralement par un point et seule l'option '''-a''' permet de détecter leur existence.
-L'utilisation d'un tel environnement régresse nettement ces dernières années avec la maturité des alternatives présentées ci-dessous. Elle perdure néanmoins chez des utilisateurs qui se sont faits à un tel système, ou qui l'apprécient car il leur permet d'utiliser un Linux récent même sur des ordinateurs anciens.+D'autres options de '''ls''' sont utiles:
 +;-m:affiche en séparant par une virgule au lieu de les présenter en colonnes.
 +;-t:trie par date, c'est-à-dire en les classant du récent au plus ancien (penser à ''t''ime).
 +;-F:trie par type. Ainsi un fichier suivi d'un slash (/) est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un "@" est un [[lien|lien]] (nous reviendrons sur les liens dans la section consacrée à '''ln''').
 +;-S:trie par ordre de taille décroissante (penser à ''s''ize).
 +;-X:trie par [[extension|extension]].
 +;-r:trie par ordre alphabétique inverse (penser à ''r''everse). 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 commençant par les plus anciens pour finir par les plus récents.
-=== Les environnements de bureau ===+== Voir le contenu d'un fichier ('''less''') ==
-{{Article détaillé|KDE|GNOME|XFCE}}+La commande '''less''' permet de lire le contenu d'un [[fichier texte|fichier texte]]. Nous avons vu que le répertoire '''/root''' contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes avec un agencement et une syntaxe particulière. Regardons le contenu du fichier '''.bashrc''' qui permet de configurer à souhait son shell: '''less .bashrc'''.
-[[Image:Kde-35-fr.png|thumb|L'environnement [[KDE]] avec le navigateur [[Konqueror]] et le lecteur multimedia [[Amarok (logiciel)|Amarok]]]]+
-[[Image:Gnome-screenshot2.png|thumb|L'environnement [[GNOME]] avec le lecteur multimédia [[Totem (logiciel)|Totem]] et le lecteur PDF [[Evince]]]]+
-[[Image:Xfce2.jpg|thumb|L'environnement [[XFCE]] avec son panneau de configuration]]+
-L'état des lieux du précédent chapitre est décrit dans un manifeste<ref>{{en}} [http://www.kde.org/announcements/announcement.php Le manifeste de 1996], montrant la nécessité d'un environnement de travail.</ref> daté de [[1996]] ayant poussé [[Matthias Ettrich]] à fonder en réaction le projet [[KDE]], puis [[Miguel de Icaza]] à fonder le projet [[GNOME]] l'année suivante, qui s'inspirent de [[Mac OS]] et de [[Microsoft Windows|Windows]] sur le plan de l'[[ergonomie]] logicielle et de la standardisation des comportements.+
-Ces deux projets sont devenus les fédérateurs de Linux sur le poste de travail.+Pour passer d'une page à l'autre, tapez sur la touche espace. Pour revenir sur la page précédente tapez sur « b » (''b''ack). Pour quitter tapez « q ».
-Chacun offre en effet :+Une option utile de '''less''' est '''-N''' qui numérote les lignes (la numérotation de ligne apparaît à l'écran mais le fichier n'en est pas pour autant modifié).
-* aux programmeurs, un environnement de programmation très productif ainsi que des recommandations d'interfaces (en anglais : ''guidelines'') permettant de produire plus vite des applications plus simples à utiliser ;+
-* aux traducteurs, une infrastructure. Ces deux environnements et leur myriade de logiciels sont traduits en plusieurs dizaines de langues<ref>Voir l'état des traductions de KDE sur [http://l10n.kde.org/stats/gui/stable/index.php l10n.kde.org] et de GNOME sur [http://www.gnome.org/i18n/ gnome.org].</ref> ;+
-* aux artistes, des espaces de travail<ref>Voir les espaces de travail de KDE sur [http://www.kde-artists.org/ kde-artists.org] et de GNOME sur [http://art.gnome.org/ art.gnome.org]</ref> pour exercer leurs talents ;+
-* aux spécialistes d'ergonomie, la possibilité de le rendre plus simple et cohérent<ref>[http://openusability.org/ openusability], [http://developer.gnome.org/projects/gup/hig/ GNOME Human Interface Guidelines] et [http://developer.kde.org/documentation/design/ui/ l'équivalent KDE] sont destinés à rendre plus simple et plus cohérente l'interface homme-machine.</ref> ;+
-* aux applications externes, un environnement de référence dans lequel s'intégrer<ref>Deux projets : [http://kde.openoffice.org/ kde.openoffice.org] et [http://www.gnome.org/projects/ooo/ www.gnome.org/projects/ooo/] ont permis l'intégration d'[[OpenOffice.org]] dans les deux environnements.</ref> ;+
-* et par conséquent, à l'utilisateur, un environnement complet, intégré et homogène ainsi qu'une suite d'applications essentielles : [[Gestionnaire de fichiers|explorateur de fichier]]s, [[navigateur Web]], [[lecteur multimédia]], [[client email]], carnet d'adresses, [[Portable Document Format|lecteur PDF]], gestionnaire d'images.+
-Ces deux environnements de bureau ont atteint récemment une maturité certaine, citons l'année [[2003]] pour [[KDE]]<ref>{{en}} {{pdf}} [http://www.linux-usability.de/download/summary_linux_usability.pdf Voir ce rapport] évaluant la prise en main de [[KDE]] 3.1 par des utilisateurs habitués à [[Microsoft Windows]].</ref>, un peu plus tard pour GNOME. Très actifs, ces deux projets ont néanmoins l'intention de s'améliorer nettement pour leurs prochaines versions majeures ; les efforts dans ce sens sont concentrés au sein des projets Appeal<ref>[http://appeal.kde.org/ Le site officiel d'Appeal]</ref> pour KDE, et ToPaZ<ref>[http://live.gnome.org/ThreePointZero Le site officiel de ToPaZ]</ref> pour GNOME.+Si vous souhaitez connaître les autres options de '''less''' invoquez '''less --help'''.
-Techniquement, ils reposent tous deux sur de nombreuses technologies communes, au premier rang desquelles le système de fenêtrage [[X11]]. Pour éviter de dupliquer certains efforts, une zone informelle de collaboration entre ces projets du nom de [[Freedesktop]] a été mise en place. +== Modifier le contenu d'un fichier (l'[[éditer|éditer]]) ('''emacs''', '''joe''') ==
-C'est dans l'approche de l'[[ergonomie]] (celle-ci étant relative au type d'utilisateur) et dans la conception du rôle d'un environnement du bureau qu'ils diffèrent : l'environnement KDE pousse loin la volonté d'intégration entre les applications, possède de très nombreuses fonctionnalités avancées et joue la carte de la configuration tout en veillant à avoir des bons choix par défaut ; GNOME se veut plus épuré et se consacre sur les tâches essentielles (reprenant la philosophie ''making things just work''). Chacun plaît, par conséquent, à un public différent.+=== joe ===
-Notons également la montée en puissance d'un troisième environnement de bureau, appelé [[XFCE]], qui vise a fournir un environnement complet basé sur [[GNOME]], tout en restant plus léger que ce dernier ou [[KDE]].+joe est simple et léger. C'est l'[[éditeur|éditeur]] que j'utilise pour faire une petite modification dans un [[fichier de configuration|fichiers de configuration]].
-== Offre en logiciels ==+Lançons joe: '''joe'''
-{{Article connexe|Liste de logiciels populaires sous Linux}}+
-La qualité d'un système d'exploitation se mesure principalement pour l'utilisateur aux applications qu'il peut utiliser. La communauté Linux a produit un grand nombre de logiciels utilisables dans de nombreux domaines (Les exemples de logiciels ne sont donnés qu'à titre indicatif) : la bureautique avec [[OpenOffice.org]], Internet avec [[Mozilla Firefox]], [[Konqueror]], [[IceWeasel]], [[Gnuzilla]], [[Mozilla Thunderbird]], [[Pidgin (logiciel)|Gaim]] ou [[BitTorrent]], le multimédia avec [[Xine]], [[MPlayer]], [[VLC media player]], [[XMMS]] ou [[Amarok (logiciel)|Amarok]], le graphisme, avec [[GIMP]], [[Inkscape]] ou [[Scribus]] ou encore la 3D avec [[Blender]].+La touche '''Ctrl''' ([[Control|Control]]) permet de le commander.
-Certains logiciels propriétaires importants ont également une version Linux. C'est le cas de [[Opera]], [[Macromedia Flash]] Player, [[Acrobat Reader]], [[Nero Burning ROM#NeroLinux|NeroLinux]] ou [[Skype]] par exemple.+Combinaisons fondamentales:
 +;'''Ctrl-k h''':afficher le panneau d'[[aide en ligne|aide en ligne]] (un nouveau '''Ctrl-k h''' l'effacera). Note: dans les textes d'aide de joe le caractère ^ (circonflexe) représente par convention la touche Control, donc ce que nous présentons ici par '''Ctrl-k h''' y est noté ^KH
 +;'''Ctrl-k e''':ouvrir un fichier
 +;'''Ctrl-k d''':[[sauvegarder|sauvegarder]]
 +;'''Ctrl-k x''':sauvegarder et quitter
 +;'''Ctrl-c''':quitter sans sauvegarder
-La notion de [[Portabilité (informatique)|portabilité]] désigne la capacité d'un programme à être utilisé sous différents systèmes d'exploitation ou architectures.+Attention: dans la version traduite en français de joe les questions qu'il pose sont en français... mais toute réponse qu'il doit analyser doit être fournie en anglais. Exemple: à la question « Enregistrer (o,n,^C) ? » il faut, pour accepter, répondre « y » (''y''es).
-Enfin notons qu'il est possible d'utiliser des logiciels faits pour [[Microsoft Windows]] sur un poste Linux grâce à une implémentation de l'[[Application programming interface|API]] Windows sous Linux comme [[WINE]]. Des offres commerciales basées sur WINE comme [[CrossOver Office]] permettent d'utiliser presque sans problèmes des logiciels tels [[Microsoft Office]] et [[Adobe Photoshop]] issus du monde Windows.+==== Configuration ====
-=== Jeux vidéo ===+En tant qu'utilisateur root éditer, dans le répertoire « /etc/joe/ », les fichiers nommés « joerc » et « jmacsrc » de sorte que
-[[Image:Tux Racer.jpg|thumb|[[Tux Racer]]]]+* « -asis » se trouve en début de ligne (pas d'espace avant le tiret), afin de pouvoir éditer des caractères accentués
-Bien qu'il existe de nombreux jeux libres disponibles sous Linux (voir notamment [[Liste de jeux sous GNU/Linux]]), l'offre n'a rien à voir en terme de qualité et de quantité avec celle des jeux commerciaux, qui dans la très grande majorité des cas, ne sont compatibles qu'avec Windows, et parfois Mac OS. +* « -backpath path » se trouve en début de ligne et soit suivi de « /tmp », la ligne devenant donc « -backpath /tmp », afin que les fichiers de sauvegarde de la précédente version d'un fichier édité se trouvent dans « /tmp » plutôt que dans le répertoire courant
-Cependant il existe plusieurs [[Mise en œuvre|implémentation]]s de l'[[Application programming interface|API]] Windows sous Linux, spécialement pour les jeux, permettant ainsi de faire fonctionner de nombreux jeux conçus pour Windows, dans les environnements [[Cedega]] et [[WINE]]. Un autre recours des linuxiens consiste tout simplement à utiliser parallèlement Windows sur le même ordinateur grâce au [[multiboot]].+=== Emacs ===
-=== Programmes shell ===+Emacs date de la fin des années 70 et ne cesse d'évoluer depuis, ce qui fait de lui, [[:guerre de religion|sans aucun doute possible]], l'[[éditeur|é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 très 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...&nbsp;[[smiley|;-)]]&nbsp;)
-[[Image:Bash screenshot.png|thumb|Session interactive avec le [[shell (informatique)|shell]] [[Bourne-Again shell|Bash]]]]+
-Les programmes les plus connus en mode texte accessibles depuis la ligne de commande comprennent [[vim]], [[emacs]], [[Sed (logiciel)|sed]], [[Advanced Packaging Tool|apt]]...+
-Une certaine partie d'entre eux peut aussi s'utiliser par l'intermédiaire d'une interface graphique.+
-Par ailleurs, les programmes fonctionnant en mode console sont relativement nombreux. Les raisons sont multiples:+Lançons Emacs: '''emacs'''
-* Historique (à l'origine, GNU/Linux ne fonctionnait qu'en mode console).+
-* Efficacité (les programmes fonctionnant en console demandent bien moins de ressources).+
-* Rapidité (ouvrir une console pour y taper une commande est souvent bien moins long que de passer par les divers menus d'un [[Gestionnaire de fenêtres]], ou d'un [[Environnement graphique]])+
-* Meilleur contrôle.+
-* etc.+
-L'utilisation de ces programmes peut s'avérer difficile pour une personne n'étant pas habituée à travailler en mode texte, des personnes venant de [[Windows]] par exemple.+Les touches '''Ctrl''' (Control) et '''Meta''' (qui correspond souvent à '''Alt''') permet de le commander.
-D'un autre côté, ils sont relativement prisés par les utilisateurs avancés des systèmes de type [[UNIX]].+
-{{...}}+Ouvrons un fichier nommé « linux-test » grâce à la [[combinaison de touches|combinaison de touches]] suivante : '''Ctrl-x Ctrl-f''', donc enfoncer la touche Control et la maintenir en position basse, taper « x » puis « f ». Vous voyez apparaître en bas la mention ''Find File : ~/''. Saisir le nom du fichier et [[valider|valider]] grâce à la touche Entrée. Son contenu apparaît et vous pouvez le modifier à souhait. Les touches '''Backspace''' et '''Suppr''' fonctionnent comme sous n'importe quel éditeur. Pour [[:sauver|sauver]] tapez la combinaison de touches suivante: '''Ctrl-x Ctrl-s'''.
-=== Bibliothèques libres ===+Si vous êtes bloqué après avoir effectué de mauvaises manipulations, tapez '''Ctrl-g'''.
-Les logiciels qui utilisent une bibliothèque libre peuvent fonctionner sur Linux et sur toutes les plates-formes où la bibliothèque est implantée. Ces bibliothèques peuvent ajouter une surcouche graphique sur des applications texte déjà existantes comme c'est le cas de [[Vim]], mais elles servent surtout à développer des logiciels accessibles aux non-informaticiens et disposant des fonctionnalités autorisées par les interfaces graphiques, comme le glisser-déposer, les manipulations à la souris, etc.+Si vous avez fait des erreurs, '''Ctrl-x u''' supprime les dernières modifications.
-D'autres applications comme [[Blender]] ou [[Google Earth]] sont un cas à part car ils utilisent la bibliothèque [[OpenGL]] destinée à la base à l'implémentation ainsi qu'à la gestion de programmes utilisant la 3D (mais aussi la 2D).+Si vos touches de direction ne fonctionnent pas:
 +'''Ctrl-p''': monter d'une ligne.
 +'''Ctrl-n''': descendre d'une ligne.
 +'''Ctrl-f''': avancer d'un caractère.
 +'''Ctrl-b''': reculer d'un caractère.
 +'''Ctrl-v''': avancer d'une page.
 +'''Alt-v''': reculer d'un écran.
 +'''Ctrl-d''': supprimer le caractère sur lequel le curseur se trouve.
 +'''Ctrl-s''': [[recherche incrémentale|recherche incrémentale]].
 +'''Meta-%''': rechercher et remplacer.
 +'''Ctrl-x Ctrl-c''': quitter Emacs
-=== Émulation ===+Avec cette rapide présentation vous pourrez déjà "barboter". Il m'est impossible de décrire dans ce document les milliers de fonctions disponibles... si vous souhaitez en savoir plus, cette séquence vous permettra de consulter les panneaux d'aide: '''Ctrl-h'''. Ou bien lancez le [[tutoriel|tutoriel]]: '''Ctrl-h t'''
-{{...}}+
-Plusieurs logiciels d'[[émulation]] existent permettant de simuler le fonctionnement de systèmes d'exploitation concurrents ou des environnements de jeu.+=== joe ''est'' Emacs ===
-Des applications écrites développées pour Windows peuvent tourner sous un système Linux par les applications [[Wine]] et son dérivé commercial [[Cedega]] qui émulent le fonctionnement des principales [[Interface de programmation|API]] de [[Microsoft Windows]].+joe peut [[émuler|émuler]] Emacs, ce qui épargne d'assimiler ses commandes propres tout en bénéficiant d'un éditeur compact et quasi partout disponible. L'invoquer pour cela avec la commande '''jmacs'''.
-De la même manière, [[Steem]] et [[ARAnyM]] émulent une bonne partie des applications écrites pour les machines [[Atari]], notamment les [[Atari ST]] et [[Atari TT]].+== Créer un compte utilisateur ==
-En outre, Linux ouvre également la possibilité d'obtenir une parfaite séparation entre plusieurs environnements virtuels tournant sur un seul ordinateur physique. Ces environnements de [[virtualisation]] permettent d'optimiser le rendement des ordinateurs [[multiprocesseur]]s à bas prix qui ont envahi le marché en [[2006]]. [[Xen]], [[VMware]], [[Virtualbox]] et même [[Qemu]] sont des exemples de ces technologies.+=== Préambule ===
-== Prise en charge du matériel ==+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 système (root), car nous risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux nécessaires à son bon fonctionnement. Nous allons donc créer un compte utilisateur, lui attribuer un mot de passe et nous [[loguer|loguer]] sur ce compte.
-La prise en charge de l'équipement matériel est l'une des critiques principales faites à Linux. En effet, tous les matériels pour micro-ordinateurs ne sont pas tous pris en charge directement par Linux et les [[Pilote (informatique)|pilotes]] compatibles avec Linux ne sont pas toujours disponibles. Certains fabricants fournissent systématiquement des pilotes pour [[Microsoft Windows]] et [[Mac OS X]], alors que sous Linux, la communauté est souvent obligée de les développer elle-même. Dans cette optique, les pilotes nécessaires pour faire fonctionner pleinement un ordinateur sont intégrées à la plupart des distributions Linux. Ce sont les périphériques de second niveau qui risquent dans certaines circonstances de ne pas avoir de pilotes disponibles, notamment certaines imprimantes, modems, webcams, etc.+
-La première raison de cette situation est le faible impact de Linux chez les particuliers, ce qui n'incite pas les fabricants à investir dans le développement de pilotes pour cet environnement. La seconde raison est le refus de certaines distributions ([[Projet Fedora|Fedora]], par exemple) d'embarquer des pilotes sous licences propriétaires, même quand ceux-ci existent, ce qui oblige l'utilisateur à les trouver et à les installer manuellement. Enfin, l'absence d'une API fixe dans le noyau Linux oblige les fabricants à refaire ou adapter les pilotes à chaque version du noyau.+Exécutez les commandes suivantes, une explication détaillée interviendra ensuite dans la [[#administration|partie consacrée à l'administration système]]:'''adduser ''le_nom_de_choix''''' (votre prénom par exemple, mais sans accent et si possible long de moins de 8 caractères)
-Les utilisateurs qui travaillent sur plusieurs plates-formes et qui ont besoin de ces pilotes peuvent trouver des versions développées par de tierces parties, mais de tels pilotes ne supportent généralement qu'un ensemble rudimentaire de fonctions, et n'apparaissent qu'après la sortie du matériel, avec un certain temps de latence. Il existe cependant des mécanismes pour faire fonctionner certains pilotes développés pour d'autres systèmes d'exploitation (comme [[NdisWrapper]]).+'''su ''le_nom_de_votre_choix''''' (la commande '''su''' permet de se [[loguer|loguer]] sous un autre compte). Il suffira de saisir '''exit''' pour « revenir » à la [[session|session]] de travail root.
-Les [[webcam]]s sont, par exemple, particulièrement concernées par cette absence de pilotes, mais le protocol [[USB Video Class]] ou UVC permet de répondre à ce problème avec de nombreuses webcam supportant ce protocol <ref>[http://linux-uvc.berlios.de/ Support UVC sur Linux et webcam supportées]</ref>. Aujourd'hui de plus en plus de grand constructeurs font des efforts pour developper ou fournir les information pour le developpement de pilotes libres pour Linux, comme Créative Labs pour ses webcams ou cartes sons <ref>[http://opensource.creative.com/webcam.html Webcams Creative labes sur Creative Opensource]</ref>, Intel (processeurs, chipset 3D, réseaux, etc...) ou des assembleurs (l'Étasunien Dell <ref>[http://www1.euro.dell.com/content/topics/topic.aspx/emea/segments/gen/client/fr/ubuntu_landing?c=fr&l=fr&s=dhs Ordinateur Dell vendu avec Linux préinstallés]</ref> et le Taïwanais Asus <ref>[http://www.blogeee.net/ Ultraportable eeePC Asus avec Linux préinstallé]</ref> vendent par exemple des ordinateurs avec Linux préinstallé) mais de nombreux autres composants nécessitent de vérifier la disponibilité de pilotes avant l'achat, s'ils sont destinés à une utilisation sous Linux.+==== Invite (prompt) de root ou d'utilisateur ====
-== Utilisation ==+L'[[invite|invite]] proposée lorsque l'on est connecté sous compte root est souvent différente 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 terminée par un signe dièse (#) et celle d'un utilisateur (non root) par un signe dollar ($).
-=== Serveur ===+
-{{Article détaillé|Serveur informatique|UNIX}}+
-[[Image:Wikimedia-Server.jpg|thumb|De nombreux serveurs de la [[Wikimedia Foundation]] fonctionnent sous [[LAMP]] (Linux-Apache-MySQL-PHP)]]+
-En raison de la parenté de Linux avec [[UNIX]], Linux s'est imposé sur le marché des serveurs informatiques très rapidement. Un point crucial a été la possibilité d'utiliser un système d'exploitation de type [[UNIX]] sur du matériel [[compatible PC]], beaucoup moins cher que les solutions à base d'UNIX propriétaire et de matériel spécifique. De nombreux logiciels serveurs très demandés et très utilisés ([[serveur web]], [[base de données]], [[Groupware]], [[serveur de messagerie électronique]]…) sont disponibles gratuitement, en général sans aucune limitation, et fiables, la part de marché de Linux dans ce domaine a en conséquence crû rapidement. +== Déclarer qui est propriétaire d'un fichier ('''chown''') ==
-Linux ayant une réputation de stabilité et d'efficacité dans la maintenance, il remplit les exigences posées à tout système d'exploitation pour serveurs. De plus, la modularité d'un système basé sur le [[noyau Linux]] permet l'exploitation de serveurs dédiés à une tâche particulière. Le portage du noyau Linux sur de nombreux composants [[hardwares]] fait que Linux est aujourd'hui utilisable sur toutes les architectures utilisées dans ce domaine. Le matériel utilisable est en conséquence considérable. Les derniers ''[[IBM eServer p5]]'' et ''[[IBM eServer i5]]'' sont par exemple supportés par IBM avec un système d'exploitation Linux et permettent d'y exécuter plusieurs systèmes Linux en parallèle.+Préambule: cette section nécessite d'être administrateur système, il vous faut donc vous [[loguer|loguer]] sous ce compte, par exemple en utilisant la commande '''su''': '''[delcros@mistra ~]$ su root'''
-La part de marché des serveurs Linux s'établit en 2004 à environ 10&nbsp;% avec une forte croissance annuelle de 50&nbsp;% <small>[Information de [[:de:Linux|l'article allemand]] ; sources à trouver]</small>. Il est utilisé dans à peu près tous les domaines. Un des exemples les plus connus est résumé par l'acronyme [[LAMP]], où Linux propulse un serveur web [[Apache HTTP Server|Apache]] associé à la base de données [[MySQL]] et au langage de programmation [[PHP: Hypertext Preprocessor|PHP]] (alternativement : [[Perl (langage)|Perl]] ou [[Python (langage)|Python]]). Linux est également souvent utilisé comme serveur de fichiers, le plus souvent dans les réseaux Windows grâce au serveur [[Samba (informatique)|Samba]], moins souvent sous [[Network file system|NFS]] ou [[Appleshare]].+Chaque fichier appartient à un utilisateur ainsi qu'à un groupe.
-=== Sécurité réseau ===+Si, par exemple, nous avons effectué un '''ls -l linux-test''' et obtenu:<br>'' -rw-r-r-- 1 <span style="color:#0000FF;">delcros</span> <span style="color:#00FF00;">users</span> 9 Jul 19 19:03 linux-test''<br>(<small>Note: couleurs ajoutées pour simplifier l'exposé)</small><br>
 +<span style="color:#0000FF;">delcros</span> est le nom du propriétaire du fichier et <span style="color:#00FF00;">users</span> est celui du groupe auquel appartient le fichier.
-Linux, qui jouit d'une bonne réputation en matière de sécurité et de performance (passage à l'échelle) est très utilisé dans le domaine des réseaux informatiques, par exemple+L'administrateur système peut décider des utilisateurs membres d'un groupe, et permettre à un utilisateur de déterminer lui même qui fera partie du groupe. Le fichier ''/etc/group'' décrit les groupes.
-comme [[passerelle (informatique)|passerelle]], comme [[routeur]] ou comme [[pare-feu]].+
-=== [[Ordinateur central]] ===+Je peux décider par exemple que le fichier « linux-test » n'appartient plus à l'utilisateur "delcros" mais à l'utilisateur "thomas":
 + [root@mistra delcros]# chown thomas linux-test'''
-La disponibilité du code source, et la possibilité qui en découle d'adapter le système à une tâche précise, a permis à Linux de faire son entrée dans les centres de calculs. Sur ce marché des ordinateurs centraux, gros ordinateurs ultra-fiables optimisés pour le traitement massif de données, omniprésents dans les banques, les sociétés d'assurances et les grandes entreprises, Linux fait de plus en plus concurrence aux systèmes UNIX propriétaires qui étaient autrefois la norme.+Vérifions:
 + [root@mistra delcros]# ls -l linux-test
 + -rwxrw-r-- 1 thomas users 9 Jul 19 19 : 03 linux-test
-=== Grappes de serveurs ===+Pour changer à la fois le propriétaire afin de le donner à ''olivier'' et le groupe (ici: ''testeurs''): '''chown olivier.testeurs linux-test'''
-Linux a été très tôt utilisé dans le domaine des [[grappe de serveurs|grappes de serveurs]] (en anglais : ''clusters''), par exemple par le moteur de recherche [[Google]] dès le milieu des années 1990. Dans cette configuration, associée à la notion de [[grille de calcul]], de simples ordinateurs tournant sous une distribution spécialisée de Linux travaillent indépendamment au sein d'un grand réseau d'ordinateurs.+Pour ne changer que le groupe: '''chown .testeurs linux-test'''
-=== Superordinateurs ===+== exécuter dans un shell ==
 +exécuter le fichier linux-test
 + ./linux-test
-Les [[superordinateur]]s sont conçus pour atteindre les plus hautes performances possibles avec les technologies connues, en particulier en terme de vitesse de calcul. En novembre 2006, selon [[TOP500]]<ref>[http://www.top500.org/stats/28/os/ Statistiques sur les systèmes d'exploitation] utilisés par les superordinateurs.</ref> Linux fait tourner 74% des cinq cents plus puissants ordinateurs du monde (contre 20% pour UNIX) dont les plus puissants, les deux serveurs ''Blue Gene'' d'[[International Business Machines Corporation|IBM]] ({{formatnum:40960}} et {{formatnum:131072}} processeurs). En Juin 2007, c'est près de 78% des superordinateurs qui utilisent Linux, contre 12% pour UNIX et, le dernier, 0,40% pour Windows.+== Copier un fichier ou un répertoire ('''cp''') ==
-=== Embarqué ===+La [[syntaxe|syntaxe]] est: '''cp [option] nom-fichier(s)-origine nom-fichier-ou-répertoire-destination'''
-[[Image:Sharp Zaurus.jpg|thumb|Sharp Zaurus SL-5500 avec l'interface graphique [[OPIE]] et le logiciel [[OpenZaurus]] basé sur Linux]]+
-Linux se trouve aussi au cœur de nombreux appareils informatiques ou d'électronique grand public, et parfois sans que l'usager le sache. Il s'agit notamment d'équipement réseau et de petits appareils numériques destinés à la consommation de masse, équipés en général d'un processeur spécialisé économe en énergie et d'une [[mémoire flash]].+Par exemple pour faire une copie d'un fichier nommé « linux-test » en un fichier « linux-test2 » il suffit de faire: '''cp linux-test linux-test2'''
-Le succès de Linux dans ce domaine tient, ici comme ailleurs, à ce que les fabricants apprécient de pouvoir d'une part adapter le logiciel à leurs besoins (consommation, interface, fonctions annexes, etc.), d'autre part de bénéficier de l'expérience et du travail d'une communauté active. Linux est aussi apprécié dans ce domaine pour sa fiabilité, sa résistance aux attaques des pirates informatiques sur les réseaux et bien sûr sa gratuité.+ATTENTION: si vous effectuez une copie d'un fichier sur un fichier qui existe dejà, son contenu sera remplacé par celui de l'autre!
-Des forums de coopération spécialisés aident les fabricants de ces produits en mettant à disposition instructions, programmes et exemples de codes, et en s'efforçant de standardiser les interfaces de programmations de Linux dans l'embarqué. L'[[Open Source Development Labs|OSDL]] a lancé le {{Date|17|octobre|2005}} la [[Mobile Linux Initiative]] pour accélérer la progression de Linux dans ce domaine.+Si vous souhaitez copier le fichier ''linux-test'' dans un répertoire (par exemple « /tmp »):'''cp linux-test /tmp'''.
 +Pour lui donner un autre nom: '''cp linux-test /tmp/linux-test2'''
-;Réseaux et communication+Nous venons de voir que l'utilisation de '''cp''' est dangereuse et l'on risque parfois d'effacer des fichiers importants. Ses options peuvent nous épargner des déconvenues.
-:Linux fait tourner plusieurs [[routeur]]s dont certains modèles de [[Linksys]], ainsi que divers terminaux fournis par des [[fournisseurs d'accès Internet]] (comme la [[Freebox]] en [[France]]).+
-;Téléphones et assistants personnels+=== Options ===
-:Linux se retrouve également sur une gamme de téléphones portables de [[Motorola]], sur l'[[assistant personnel]] [[Zaurus|Sharp Zaurus]] et les tablettes Internet [[Nokia 770]], Nokia N800 et Nokia N810. Dans le domaine des [[Assistant de navigation personnel|assistants de navigation personnels]], les systèmes [[récepteur GPS|GPS]] autonomes de [[TomTom]] sont conçus à partir d'une plate-forme Linux.+
-;Multimédia+;'''-i''':avertit l'utilisateur de l'existence d'un fichier du même nom et lui 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 `linux-test2'?'' (ou, en version française, ''cp: écraser `linux-test2'?'') apparaît. Répondre par "y" (yes) ou "n". En version française "o" (oui) fonctionne.
-:Linux est utilisé dans des lecteurs de salon [[DivX]], sur des [[Baladeur numérique|baladeurs audio]] comme ceux de [[SanDisk]] et sur les baladeurs multimédias d'[[Archos]].+
-== Linux et la sécurité ==+;'''-b''':comme l'option -i s'assure que la copie n'[[écraser|écrase]] pas un fichier existant. Le fichier écrasé est toutefois alors sauvegardé, renommé avec un suffixe tilde (~).
-Les raisons pour lesquelles Linux est réputé avoir une bonne [[sécurité informatique]] sont diverses et dépendent également du domaine d'utilisation.+;'''-v''':affiche les noms des fichiers copiés (pensez à ''v''erbeux). Utile si vous souhaitez voir le bon déroulement de la "multicopie".
-Ainsi, sur le poste de travail, Linux bénéficie d'une stricte [[séparation des privilèges]], ce qui dans la pratique n'est souvent pas utilisé avec des systèmes concurrents. Une des conséquences est qu'un [[ver informatique|ver]] ou [[virus informatique]] ne peut accéder qu'à une partie des ressources et fonctionnalités d'un système Linux, mais ni aux données importantes du système, ni aux données d'éventuels autres utilisateurs.+;'''-p''':lors de la copie les attributs du fichier seront préservés (propriétaire, groupe, date de création... lire [[#chown|chown]]).
-Par comparaison avec d'autres systèmes grand-public, Linux, et avant lui [[UNIX]], s'est propagé d'abord parmi des gens possédant un solide bagage technique et sensibles aux problèmes de sécurité informatique. Le développement de Linux s'est, par conséquent, déroulé dans un contexte où la sécurité était une question critique, comme en témoigne le nombre de logiciels de qualité dans ce domaine qui sont libres et originaires du monde Linux/UNIX<ref>[http://www.insecure.org/tools.html insecure.org] propose un classement des logiciels ayant trait à la sécurité.</ref>.+==== '''-r''' ====
-Dans le domaine des serveurs, le degré de sécurité dépend, par comparaison, avant tout du degré d'expérience qu'a l'[[administrateur système]]. Là, Linux marque des points grâce à sa liberté d'utilisation, qui permet sans risque et sans surcoût de tester abondamment divers scénarios sur d'autres ordinateurs, et d'y acquérir ainsi une expérience utile.+L'option '''-r''' copie de manière [[récursive|''r''écursive]], donc l'ensemble d'un répertoire et de ses sous-répertoires.
-Il existe une série de [[distributions Linux|distributions]] spécifiquement axées sur la sécurité, et des initiatives telles que [[SELinux]] de la [[National Security Agency]] pour atteindre des niveaux de protection toujours plus hauts. Mais aussi, une série de distribution axée sur l'anti-sécurité, comme [[Damn Vulnerable Linux]], pour sensibiliser les experts et les aspirants, aux problématiques de sécurité sur ce système d'exploitation.+Exemple: je possède dans mon répertoire « /home/delcros/personnel » un répertoire intitulé « mygale » qui contient 3 sous répertoires (« 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/
-Un autre argument avancé est la variété des plates-formes matérielles supportées, ainsi que les solutions logicielles. Une faille de sécurité touchant le plus populaire [[client email]] ne touchera qu'une fraction des linuxiens ; par contraste, une faille touchant [[Outlook Express]] peut toucher d'un coup une proportion énorme des utilisateurs de Windows. Cette thèse est développée dans un rapport écrit par des sommités du domaine comme [[Bruce Schneier]] pour le compte de la [[CCIA]] et reprise par la société [[Gartner]] dans un document<ref>{{en}} {{pdf}} [http://www.ccianet.org/papers/cyberinsecurity.pdf CyberInsecurity: The cost of Monopoly], un document du CCIA dénonçant des dangers d'un système monopolitaire.</ref>. Une partie est traduisible ainsi :+Je copie le répertoire « mygale » ainsi que ses sous-répertoires dans mon répertoire « /home/delcros/ » en commençant par me placer dans le répertoire recelant l'ensemble: '''cd /home/delcros/personnel/''' puis en le recopiant: '''cp -r mygale /home/delcros'''.
-{{citation_bloc|La plupart des ordinateurs tournent sous Microsoft™, et, par conséquent, la plupart des ordinateurs du monde sont vulnérables aux mêmes virus et aux mêmes vers au même moment. Le seul moyen d'éviter cela est d'éviter la monoculture logicielle dans le domaine des systèmes d'exploitation pour les mêmes raisons raisonnables et évidentes pour lesquelles on évite la monoculture en matière d'agriculture. Microsoft exacerbe ce problème via une panoplie de pratiques visant à verrouiller ses utilisateurs à sa plate-forme. L'impact sur la sécurité de ce verrouillage est réel et représente une menace pour la société.}}+En associant l'option '''-v''' et '''-r''': '''cp -rv mygale /home/delcros''':
 + mygale -&gt; /home/delcros/mygale
 + mygale/index.html -&gt; /home/delcros/mygale/index.html
 + mygale/logo.gif -&gt; /home/delcros/mygale/logo.gif
 + mygale/linux -&gt; /home/delcros/mygale/linux
 + mygale/linux/linux.html -&gt; /home/delcros/mygale/linux/linux.html
 + <small>... ce n'est qu'une partie du résultat ...</small>
-Enfin, le fait que Linux et nombre de logiciels tournant sous Linux soient des [[logiciel libre|logiciels libres]] permet que son [[code source]] soit étudié d'un œil critique par quiconque désirant le faire, que ce soit pour effectuer des adaptations, dans un cadre éducatif, pour répondre aux intérêts privés d'une entreprise/institution ou par simple intérêt personnel. En relation avec cela, on entend souvent l'argument que les failles de sécurité sont corrigées plus rapidement, affirmation approuvée et réfutée par diverses études, en fonction généralement de leur source de financement. Enfin, la liberté des logiciels rend inutile le recours au [[piratage informatique]], aux [[crack (informatique)|cracks]] ou autres sites ''[[warez]]'' très populaires parmi les adeptes des autres systèmes d'exploitation, et qui constituent un vecteur d'infection des ordinateurs.+J'ai par exemple déjà copié dans le répertoire d'un utilisateur (pour qu'il en dispose) de la documentation qui se trouvait dans un répertoire « doc » dont le propriétaire était l'administrateur système. Pour cela j'ai tout d'abord copié tout le répertoire et ses sous-répertoires dans le répertoire de l'utilisateur grâce à la commande '''[[#Copier_un_fichier_ou_un_r.C3.A9pertoire_.28cp.29|cp]]''' et à son option '''[[#-r|-r]]''' puis ai modifié les droits de propriétés de la copie et de ses sous répertoires: '''[root@mistra delcros]# chown -R delcros.users doc'''. L'option '''-R''' ([[récursion|''r''ecursive]]) de '''chown''' le contraint à propager son action dans les sous-répertoires, établissant de cette seule commande le propriétaire de plusieurs répertoires et de leurs fichiers.
-Reste que Linux n'est pas totalement insensible aux problèmes de sécurité, comme l'a montré le ver [[Slapper]] en septembre 2002, premier du genre à toucher un nombre notable d'ordinateurs sous Linux, avant tout des serveurs web tournant sous [[Apache HTTP Server|Apache]] (6000 à l'apogée du ver<ref>{{en}} [http://www.vnunet.com/vnunet/news/2120156/arrest-slapper-author vnunet.com annonce l'évolution de Slapper] en septembre 2002.</ref>).+== Déclarer les droits d'accès (permissions) accordés ('''chmod''') ==
-=== Gestion numérique des droits ===+Linux permet de spécifier les modes d'accès (à un fichier ou répertoire) autorisés, que l'on appelle [[droits d'accès|droits d'accès]] ou « permissions ».
-La [[gestion numérique des droits]] (DRM) concerne le domaine du multimédia, et notamment la musique et les vidéos qui peuvent être achetées sur Internet. Certaines œuvres sont protégées par des [[Verrou (informatique)|verrous numériques]], visant à contrôler l'utilisation de l'œuvre, par exemple en limitant le nombre d'écoutes ou de copies possibles. Ces DRM nécessitent l'emploi d'une technologie particulière, qui est la propriété exclusive du fabricant et vendeur desdits DRM, ce qui explique que la lecture d'une œuvre protégée se trouve liée à l'utilisation d'un programme spécifique. Les deux plus grand fabricants de systèmes de gestion des droits digitaux, [[Microsoft]] et [[Apple]], conditionnent l'usage des œuvres protégées par leurs systèmes à l'utilisation respective de [[Windows Media Player]], et de [[iTunes]]. Ces sociétés vendant leur propre système d'exploitation, elles ne souhaitent pas proposer de version de leurs programmes pour Linux. Ainsi, il n'est souvent pas possible pour les utilisateurs de Linux d'acheter en ligne de la musique sur un site de téléchargement payant, ou d'écouter de la musique déjà achetée et téléchargée. +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 existe aussi des DRM sur les CD audio, mais ceux-ci sont beaucoup moins standardisés et moins courants. La plupart sont conçus pour fonctionner avec les systèmes d'exploitation de Microsoft et sont donc susceptibles d'être totalement inefficace pour un utilisateur de Linux.+Il y a là de nombreuses informations, certaines ne seront décrites que plus tard.
-Il ne s'agit pas de limitations techniques, puisque des systèmes de gestion libres existent <ref name=SUN-DRM">{{de}} Julius Stiebert: ''[http://www.golem.de/0603/44158.html DRM-Spezifikationen von Sun]'' auf golem.de, 21. März 2006</ref>. Voir aussi [[Linus Torvalds]], selon lequel Linux et la gestion des droits ne sont pas incompatibles.<ref name="lkml-DRM-linux">{{de}} Linus Torvalds: ''[http://lkml.org/lkml/2003/4/23/365 Flame Linus to a crisp!]'' auf der LinuxKernel-Mailing-Liste, 23. April 2003</ref>+Le nom du fichier, « bidule », apparaît à la fin de la ligne.
-=== Critiques ===+Le premier « adelcros » signifie que le fichier appartient à l'utilisateur « adelcros ». La mention « users » signifie qu'il appartient au groupe « users ».
-[[Brad Spengler]] développeur chez [[grsecurity]] accuse Linux de parfois centrer ses efforts sur les fonctionnalités au détriment de la sécurité. Il prétend que Linus Torvalds lui aurait dit ne pas être intéressé par l'ajout d'options de sécurité utiles pour éviter des [[débordement de tampon|débordements de tampon]], car cela ralentirait le chargement des [[logiciel|applications]]<ref name="Linux_Security">{{en}} ''[http://www.linuxinsider.com/story/56337301722084057.html Developer Raps Linux Security]''</ref>.+La partie qui contient ''-rw-r--r--'' révèle la nature du fichier ainsi que les permissions (droits d'accès).
-Il reproche l'absence d'une personne chargée officiellement de la sécurité, avec qui il serait possible de communiquer en privé en toute sécurité. À la place la seule solution est d'envoyer un e-mail sur une [[liste de diffusion]] relative aux questions de sécurité où les failles découvertes sont parfois utilisées à des fins malicieuses avant qu'une mise à jour de sécurité ne soit diffusée, alors que les usagers de Linux ne sont pas au courant de l'existence de cette faille<ref name="Linux_Security" />.+Le premier de ces 10 caractères 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 réalité le fichier est un répertoire ([[directory|''d''irectory]]). Si on observait un ''l'', alors le fichier serait un [[#Lien_.28ln.29|lien]].
-Enfin il remet en cause l'implantation du système [[Linux Security Modules|LSM]] depuis la version 2.6 du noyau qui aurait été implanté par laxisme et qui faciliterait l'insertion de [[rootkit]]s invisibles au sein du système en les faisant passer pour des modules de sécurité.<ref>{{en}} [http://www.grsecurity.net/lsm.php politique envers le système LSM sur grsecurity.net]</ref> D'autres développeurs du noyau reprochent à ce système de consommer des ressources non négligeables et de permettre le détournement de la licence GPL du noyau en y ajoutant des composantes propriétaires.+Décomposons les 9 derniers caractères en 3 segments: '''rw-''' , '''r--''' et '''r--'''
-== Références ==+# Le premier révèle les droits accordés au <u>propriétaire</u> du fichier
-{{références|colonnes=2}}+# Le deuxième révèle les droits accordés aux [[compte|comptes]] qui ne sont pas celui du propriétaire et faisant partie du <u>groupe</u> auquel appartient le fichier
 +# Le troisième révèle les droits accordés aux <u>autres comptes</u>
-== Voir aussi ==+Dans chaque segment le premier caractère correspond au droit de lecture (noté ''r'', penser à ''r''ead), le deuxième correspond au droit d'écriture (''w''rite) et le troisième correspond au droit d'exécution (''x'', e''x''ecution). Si à la place d'un des ces caractères nous ne voyons qu'un tiret ''-'', c'est que le droit correspondant n'est pas accordé.
-* le [[Noyau Linux]], le [[noyau de système d'exploitation]]+
-* la mascotte [[Tux]]+
-* [[Système d'exploitation]]+
-* [[Distribution Linux]]+
-* [[Liste de logiciels populaires sous Linux]]+
-* [[Groupe d'utilisateurs Linux]]+
-* [[GNU et Linux]]+
-* [[Licence publique générale GNU]] (GPL)+
-* [[Logiciel libre]]+
-=== Bibliographie ===+« -rw-r--r-- », par exemple, exprime que tous les utilisateurs ont le droit de lire le fichier et que seul son propriétaire a le droit de le modifier. Personne ne peut lancer l'[[exécution|exécution]] de ce fichier puisque ''x'' n'apparaît pas.
-{{Wikibooks|GNU/Linux|Linux}}+
-* [[Linus Torvalds]], David Diamond, ''Il était une fois Linux. L'extraordinaire histoire d'une révolution accidentelle'', Osman Eyrolles Multimédia, 2001 <small>(ISBN 2746403218)</small> ;+
-* Chris DiBona (s. dir.), ''Tribune libre. Ténors de l'informatique libre'', O'Reilly, 1999 <small>(ISBN 2841770842)</small> ;+
-* Jean-Paul Smets-Solanes, Benoît Faucon, ''Logiciels libres. Liberté, égalité, business'', Edispher, 1999 <small>(ISBN 2911968107)</small> ;+
-* Perline, Thierry Noisette, ''La Bataille du logiciel libre. Dix clés pour comprendre'', La Découverte, coll. « Sur le vif », 2004, réédition augmentée 2006 <small>(ISBN 2707148806) [http://www.labatailledulogiciellibre.info/ site de l'ouvrage]</small> ;+
-* [[Eric Raymond]], ''[[La Cathédrale et le bazar]]'' <small>[http://www.linux-france.org/article/these/cathedrale-bazar/ lire en ligne]</small> ;+
-* [[Florent Latrive]], ''Du bon usage de la piraterie : culture libre, sciences ouvertes'', Exils, 2004 <small>(ISBN 291296959X) [http://www.freescape.eu.org/piraterie/ présentation]</small> ;+
-* [[Philippe Aigrain]], ''Cause commune. L'Information en bien commun et propriété'', Fayard, coll. « Transversales », 2005 <small>(ISBN 2213623058)</small>.+
-=== Liens externes ===+Lorsque l'on traite de permissions la lettre ''u'' (''u''ser) désigne par convention le propriétaire du fichier, la lettre ''g'' le ''g''roupe d'utilisateurs qui possède le fichier et la lettre ''o'' (''o''thers) les autres utilisateurs. La lettre ''a'' (''a''ll) fait référence à tous les utilisateurs. Cette notation est la plus facile à employer avec la commande de modification des permissions '''chmod'''.
-{{Commonscat|Linux|Linux}}+
-{{ODP|World/Français/Informatique/Logiciels/Systèmes_d'exploitation/Linux/}}+
-<!-- Dans le but de limiter les liens externes puisque wikipédia n'a pas vocation à être un annuaire, les liens externes sont limités aux catégories équivalentes de DMOZ qui est un annuaire (cf. www.aef-dmoz.org) régit par un même esprit que celui de wikipédia et où vous êtes invités à enregistrer votre site plutôt que de l'ajouter ici -->+
-{{Multi bandeau|Portail Linux|logiciels libres|Portail informatique}}+Seul le propriétaire du fichier (ainsi que "root", qui dispose des pleins pouvoirs) a le pouvoir de modifier ces permissions.
-{{Lien AdQ|ar}}+Établissons par exemple que n'importe qui pourra lire et modifier un fichier nommé « linux-test »:
-{{Lien AdQ|de}}+ [delcros@mistra delcros]$ chmod a+wr linux-test
-{{Lien BA|sv}}+
- {{Lien BA|en}}+* '''chmod''' est la commande ''ch''angeant les « ''mod''es d'accès »
 +* ''a'' indique que tous (''a''ll) les segments seront touchés par la modification des permissions
 +* ''+'' signifie que l'on accorde une ou plusieurs permission(s) supplémentaire(s), qui s'ajoute à celles qui sont déjà établies. Pour en retrancher il suffit d'utiliser en lieu et place le signe ''-''. Pour établir les permissions indépendamment de ce qu'elles sont déjà il suffit d'employer le signe ''=''.
 +* ''w'' signifie qu'il s'agit de la permission d'écriture (''w''rite)
 +* ''r'' signifie qu'il s'agit également de la permission de lecture (''r''ead)
-[[Catégorie:Linux|*]]+Pour vérifier que tout a bien fonctionné, faites un '''ls -l linux-test''' qui montrera une première colonne contenant ''-rw-rw-rw-''
-[[Catégorie:Système d'exploitation]]+
-[[af:Linux]]+Pour supprimer les droits d'écriture et de lecture accordés aux membres du groupe propriétaire du fichier ainsi qu'aux autres utilisateurs: '''chmod go-wr linux-test'''
-[[als:Linux]]+ 
-[[am:ሊኑክስ]]+* dans ''go'' le ''g'' signifie que la commande affectera les permissions accordées au ''g''roupe propriétaire, et le ''o'' qu'elle affectera également celles que l'on accorde aux « autres utilisateurs » (ceux qui ne sont ni le propriétaire, ni membres du groupe auquel le fichier appartient, ''o''ther users)
-[[an:Linux]]+* ''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.
-[[ar:لينكس]]+ 
-[[ast:Linux]]+Si je souhaite que le propriétaire du fichier ne puisse pas exécuter un fichier:
-[[az:Linuks]]+ [delcros@mistra delcros]$ chmod u-x linux-test
-[[bar:Linux]]+ 
-[[bat-smg:Linux]]+Pour définir 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 exécution pour le propriétaire, que le groupe n'ait le droit que de le lire et exécuter, et que les autres utilisateurs ne disposent d'aucun droit):
-[[be-x-old:GNU/Linux]]+ [delcros@mistra delcros]$ chmod u=rwx,g=rx,o= linux-test
-[[bg:Линукс]]+ 
-[[bn:লিনাক্স]]+Pour ôter le droit d'y écrire à tous sauf au propriétaire:
-[[bs:Linux]]+ chmod g-w,o-w linux-test
-[[ca:Linux]]+ 
-[[co:Linux]]+Lorsqu'un programme (quel qu'il soit, y compris le shell) tente d'accéder à un fichier, le [[noyau|noyau]] Unix sait pour quel utilisateur le programme fonctionne. Si le fichier appartient à l'utilisateur les droits accordés au propriétaire s'appliquent. Sinon, si le fichier appartient au groupe auquel l'utilisateur appartient, alors les droits accordés au groupe auquel le fichier appartient s'appliquent. Sinon les droits accordés aux autres utilisateurs seront respectés. Exemple:
-[[cs:Linux]]+ adelcros@mira:~$ ls -l secret.txt
-[[csb:Linuksowô distribùcëjô]]+ ----r--r-- 1 adelcros users 362 sep 17 22:55 secret.txt
-[[cy:Linux]]+ adelcros@mira:~$ less secret.txt
-[[da:Linux]]+ less: secret.txt: Permission non accordée
-[[de:Linux]]+ 
-[[el:Linux]]+Il n'est pas stupide d'interdire ainsi l'accès 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'accéder 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.
-[[en:Linux]]+ 
-[[eo:Linukso]]+Autre exemple:
-[[es:Linux]]+ adelcros@mira:~$ ls -l important.txt
-[[et:Linux]]+ ----r--r-- 1 adelcros users 362 sep 17 22:55 important.txt
-[[eu:Linux]]+ adelcros@mira:~$ rm important.txt
-[[fa:لینوکس]]+ /bin/rm: détruire un fichier protégé en écriture fichier régulier `important.txt'?
-[[fi:Linux]]+ 
-[[ga:Linux]]+=== Expression numérique des permissions (système octal) ===
-[[gl:Linux]]+ 
-[[he:לינוקס]]+Il n'est pas nécessaire d'assimiler cette section, elle n'est destinée qu'à éclairer des choses étranges parfois rencontrées.
-[[hi:लिनक्स]]+ 
-[[hr:Linux]]+Une autre façon de déclarer (définir) les permissions existe. Elle repose sur une notation numérique remplaçant, d'une part par un 0 (zéro) chaque droit non accordé (ceux que '''ls''' révèle au moyen d'un tiret) et, d'autre part, les autres (accordés!) par un 1 (chiffre ''un'').
-[[hu:Linux]]+ 
-[[hy:Linux]]+Pour chaque fichier les trois segments de permission (le premier décrit les droits du propriétaire, le deuxième ceux des membres du groupe auquel appartient le fichier, le troisième ceux de tous les autres comptes) rassemblent chacun 3 droits (r, w, x), il y a donc 2<sup>3</sup> donc 8 combinaisons possibles. C'est pourquoi un système numérique de notation des permissions parfois adopté est dit [[octal|octal]].
-[[ia:Linux]]+ 
-[[id:Linux]]+ Binaire -- Logique ----- Décimal
-[[ilo:GNU/Linux]]+ 000 -------- (---) ------- 0
-[[is:Linux]]+ 001 -------- (--x) ------- 1
-[[it:Linux]]+ 010 -------- (-w-) ------- 2
-[[ja:Linux]]+ 011 -------- (-wx) ------- 3
-[[ka:ლინუქსი]]+ 100 -------- (r--) ------- 4
-[[kk:Linux]]+ 101 -------- (r-x) ------- 5
-[[kn:ಲಿನಕ್ಸ್]]+ 110 -------- (rw-) ------- 6
-[[ko:리눅스]]+ 111 -------- (rwx) ------- 7
-[[ku:GNU/Linux]]+ 
-[[la:Linux]]+'''chmod'' digère 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 propriétaire) 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 exprimés dans l'ordre, le premier pour le propriétaire, le deuxième pour le groupe, le troisième pour les autres.
-[[lb:Linux]]+ 
-[[li:Linux]]+== Supprimer un fichier (''rm'') ==
-[[lt:Linux]]+ 
-[[lv:Linux]]+Effectuons à nouveau une copie du fichier « linux-test » (tapez au préalable '''cd''' pour vous retrouver dans votre répertoire personnel): '''cp linux-test linux-test2'''
-[[mg:Linux]]+ 
-[[mk:Линукс]]+Pour supprimer le fichier "linux-test2": '''rm linux-test2'''
-[[mr:लिनक्स]]+ 
-[[ms:Linux]]+=== Options ===
-[[nds:Linux]]+ 
-[[ne:लिनक्स]]+;'''-i''':comme pour '''cp''', l'option '''-i''' permet à '''rm''' de demander à l'utilisateur s'il souhaite vraiment supprimer le ou les fichiers en question.
-[[nl:Linux]]+;'''-r''':supprime un répertoire et ses sous répertoires (attention, c'est TRÈS dangereux)
-[[nn:Linux]]+;'''-f''':supprime les fichiers qu'il est interdit d'écrire ainsi que les répertoires, sans demande une confirmation (à utiliser avec précaution...)
-[[no:Linux]]+ 
-[[oc:Linux]]+== Créer un répertoire ('''mkdir''') ==
-[[pl:Linux]]+ 
-[[pt:Linux]]+Pour créer un répertoire, il suffit de taper la commande suivante (ici je crée dans « /home/delcros » un répertoire nommé "personnel"): '''mkdir personnel'''
-[[qu:Linux]]+ 
-[[ro:Linux]]+Une option de '''mkdir''' est souvent utile: '''mkdir -p''' permet de créer une suite de répertoire.
-[[ru:GNU/Linux]]+ 
-[[scn:Linux]]+Supposons que je veuille créer dans mon répertoire '''/home/delcros''' la suite de répertoires suivante : '''doc/mygale/mail'''. Je peux faire soit: '''mkdir doc''' , '''cd doc''' , '''mkdir mygale''' , '''cd mygale''' , '''mkdir mail'''
-[[sh:Linux]]+ 
-[[simple:Linux]]+Ou bien utiliser l'option '''-p''' qui me permet de créer la suite de répertoires "parents" le plus simplement du monde: '''mkdir -p doc/mygale/mail'''
-[[sk:Linux]]+ 
-[[sl:Linux]]+== Déplacer ou renommer un fichier ('''mv''') ==
-[[sq:Linux]]+ 
-[[sr:Линукс]]+Pour comprendre la commande '''mv''' (penser à ''m''o''v''e), voyons une suite de commandes qui effectuent des opérations différentes: '''mv linux-test perso''' renomme le fichier "linux-test" en "perso"
-[[sv:Linux]]+ 
-[[ta:க்னூ/லினக்ஸ்]]+'''mv perso perso''' écrase le fichier existant avec le fichier copié (dit « [[source|source]] »).
-[[th:ลินุกซ์]]+ 
-[[tl:Linux]]+'''mv personnel mon-répertoire''': renomme le répertoire « personnel » en « mon-répertoire ».
-[[tr:Linux]]+ 
-[[uk:Лінукс]]+'''mv perso /home/delcros/mon-répertoire''': déplace le fichier « perso » dans le répertoire '''/home/delcros/mon-répertoire'''
-[[ur:لینکس]]+ 
-[[uz:GNU/Linux]]+=== Options ===
-[[vec:Linux]]+ 
-[[vi:Linux]]+;'''-b''': effectue une sauvegarde (penser à [[backup|''b''ackup]]) des fichiers avant de les déplacer: '''mv -b mon-répertoire/perso /mon-répertoire/linux-test''' renomme le fichier « perso » en « linux-test », cependant vous trouverez dans le répertoire une sauvegarde de perso nommée « perso~ ».
-[[yi:לינוקס]]+;'''-i''': demande pour chaque fichier et chaque répertoire s'il peut ou non déplacer fichiers et répertoires (penser à [[interactif|''i''nteractif]])
-[[zh:Linux]]+;'''-u''': demande à mv de ne pas supprimer le fichier si sa date de modification est la même ou est plus récente que son remplaçant (penser à [[update|''u''pdate]]).
-[[zh-min-nan:Linux]]+ 
-[[zh-yue:Linux]]+== Chercher un fichier ou répertoire ('''find''', '''locate''', '''which''') ==
 + 
 +=== '''find''' ===
 + 
 +Exemple simple: comment trouver un fichier portant un nom donné ?
 +'''find /home -name linux-test2'''<br>
 +Analyse:
 +;"/home":indique que nous voulons chercher à partir du répertoire « /home »
 +;"-name":indique que nous voulons trouver un fichier portant un nom donné.
 + 
 +Pour chercher tous les fichiers commençant par "linux-tes" et définir à partir de quel répertoire 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 répertoire vous pourrez utilisez cette option ainsi: '''find /usr -type d ...'''. Ici, on demande à '''find''' de trouver des répertoires, et non des fichiers, grâce à l'option '''-type d''' (penser à [[directory|''d''irectory]], qui signifie ''répertoire'')
 + 
 +==== -exec ====
 + 
 +Exécute une commande sur les fichiers trouvés.
 + 
 +La différence entre '''-exec''' et '''-ok''' est que la deuxième vous demandera pour chaque fichier trouvé si vous souhaitez réellement réaliser l'opération: '''find -name 'linux-tes*' -print -ok rm {} \;'''
 +<code>./linux-test<br/> rm ... ./linux-test ? y</code>
 + 
 +Avec l'option '''-exec''' la paire d'accolades indique l'endroit où se trouvera, lors de l'[[invocation|invocation]] de la commande, le nom du fichier trouvé. L'anti-slash lié au point virgule forme une séquence d'[[échappemment|échappemment]].
 + 
 +=== '''locate''' ===
 + 
 +La commande '''locate''' a la même mission que '''find''' mais ne cherche pas le fichier dans l'arborescence de répertoires fournie en argument mais explore une base de données qui contient la liste des fichiers et répertoires existants. Cette base de données est en général automatiquement générée une fois par jour par le système grâce à une commande appelée '''updatedb'''. La syntaxe est:'''locate nom_du_fichier'''. Bien que la commande '''locate''' soit très intéressante, elle ne possède pas la puissance des options de '''find'''. De plus, si vous créez des fichiers pendant la journée et que vous les recherchez avec elle, il n'est pas sûr que la base de données ait été remise à jour. Bref, '''locate''' est un complément de '''find'''.
 + 
 +== Trouver un texte ('''grep''') ==
 + 
 +La commande '''grep''' est un pivot des commandes UNIX. Elle cherche une [[expression regulière|expression regulière]] 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 numéro de chaque ligne contenant un résultat. Une autre option très utile est '''-l''' qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche.
 + 
 +== Compactage et décompactage ('''compress''', '''gzip''', '''bzip2''', '''7zip''') ==
 + 
 +=== '''compress''' ===
 + 
 +Il est obsolète, ne pas compacter grâce à lui.
 + 
 +Si vous rencontrez un fichier d'[[:extension|extension]] '''.Z''' vous pouvez le décompacter grâce à gzip: '''gzip -d ''nom_du_fichier''.Z'''.
 + 
 +=== '''gzip''' ===
 + 
 +Efficace et très répandu.
 + 
 +Pour [[compacter|compacter]] un fichier: '''gzip nom_du_fichier'''<br>
 +Pour décompacter: '''gzip -d ''nom_du_fichier''.gz'''
 + 
 +=== '''bzip2''' ===
 + 
 +=== '''7zip''' ===
 + 
 +== Archivage de données ('''tar''') ==
 + 
 +La commande [[tar|tar]] gère des [[archive|archives]], contenant chacune au moins un répertoire ou fichier.
 + 
 +Vous aurez souvent besoin de '''tar xzf ''nom_du_fichier''.tar.gz''' , qui décompacte une archive au format '''.tar.gz''' ou '''.tgz'''.
 + 
 +L'[[extension de fichier|extension]] '''.tar.gz''' indique que le fichier est une archive tar et qu'il est compacté ('''.gz''' révèle qu'il l'est avec [[gzip|'''gz'''ip]]).
 + 
 +Les [[argument|arguments]] employés dans la commande précédente (« xzf ») peuvent être ainsi compris:
 +;'''x''':(e'''x'''traction) déclenche l'extraction de certains fichiers d'une archive (lorsque l'on ne spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, '''tar''' les extrait tous)
 +;'''z''':décompacte l'archive grâce à [[gzip|g'''z'''ip]]
 +;'''f''':traite un '''f'''ichier-archive dont le nom suit (ici: « ''nom_du_fichier''.tar.gz »)
 + 
 +Pour connaître la liste des fichiers contenus dans une archive compactée on emploiera '''tar tvzf ''nom_du_fichier''.tar.gz'''
 +;'''t''':dresse lis'''t'''e du contenu de l'archive
 +;'''v''':est le mode "''v''erbeux", qui montre tout
 + 
 +Si je me trouve dans le répertoire « « /home/delcros/ » » la commande suivante créera une archive du répertoire « /home/delcros/personnel »: '''tar cvjf personnel.bz2 personnel'''
 +;'''c''':tar va ''c''réer une archive
 +;'''j''':tar compacte l'archive grâce à [[bzip2|bzip2]]
 + 
 +== Connaître l'espace disque utilisé ('''df''' et '''du''') ==
 + 
 +La commande '''df''' permet de connaître l'emplacement de [[monter|montage]] des [[système de fichiers|systèmes de fichiers]] accessibles sur votre système et leurs capacités restantes.
 + 
 +La commande '''du''' permet de connaître l'encombrement sur disque du répertoire spécifié et ses sous répertoires.
 + 
 +=== Options ===
 + 
 +;'''-c''':total ''c''umulé
 +;'''-h''':adoption d'unités facilitant la lecture du résultat par un ''h''umain
 + 
 +== Contrôler les ressources utilisées par les processus ('''top''', '''ps''', '''kill''') ==
 + 
 +=== '''top''' ===
 + 
 +La commande '''top''' affiche en continu des informations décrivant l'activité du système. Elle permet surtout de suivre les [[ressource|ressources]] que les [[processus|processus]] utilisent (quantité de [[mémoire|mémoire]], pourcentage de [[CPU|CPU]]...).
 + 
 +Vous pourrez utiliser l'option '''-d''' pour spécifier des délais de rafraîchissement (en secondes).
 + 
 +Sous '''top''' il est possible d'expédier de manière [[interactivité|interactive]] un [[signal|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 défaut qui met fin à un processus, [[#kill|9 (SIGKILL) est beaucoup plus brutal et à éviter]].
 + 
 +Pour quitter '''top''', appuyer simplement sur la touche "q".
 + 
 +Une [[famille top|famille d'utilitaires de type ''top'']] existe.
 + 
 +=== '''ps''' ===
 + 
 +La commande '''ps''' dresse liste des processus actifs: '''ps'''<br>
 +<code>
 + PID TTY STAT TIME COMMAND
 + 341 p1 S 0:00 bash
 + 344 p2 S 0:00 bash
 + 1039 p3 S 0:00 bash
 + 1219 p3 R 0:00 ps
 +</code>
 + 
 +Le [[PID|PID]] est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifié dans le système par un nombre unique. Le "[[TTY|TTY]]" indique à quel port de [[terminal|terminal]] est associé le processus. "STAT" indique l'état (''stat''us) dans lequel se trouve le processus.
 + 
 +Dans l'exemple, trois processus sont endormis (S comme "''s''leep"), et un autre en cours d'exécution (R comme "''r''un"). Ce dernier n'est autre que la commande '''ps''' que nous venons de lancer, qui se « voit elle-même ». Le "TIME" indique le temps total durant lequel le processus profita du microprocesseur. "COMMAND" précise, comme son nom l'indique, la commande qui créa le processus.
 + 
 +Une simple commande '''ps''' n'indique pas tous les processus du système. Le simple fait de lancer '''ps''' nous a juste indiqué les processus associés à un terminal qui dépendent de l'utilisateur courant. En fait, il est tout a fait probable que d'autres processus non liés à un terminal soient actifs: '''ps -ax''' les révélera.
 + 
 +Si en plus vous voulez connaître les utilisateurs associés à 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 utilisées par le processus. "%MEM" montre en pourcentage la proportion de [[mémoire vive|mémoire vive]] dans la [[mémoire|mémoire]] utilisée par le processus, elle-même 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-dépendances: '''pstree'''<br>
 +<code>init-+-crond<br /> |-emacs---emacsserver<br /> |-gpm<br /> |-inetd<br /> |-kerneld<br /> |-kflushd<br /> |-klodg<br /> |-kswapd<br /> |-loadmeter<br /> |-lpd<br /> |-6*[mingetty]<br /> |-named<br /> |-netscape---netscape<br /> |-4*[nfsiod]<br /> |-nxterm---slrn-gor---slrn<br /> |-portmap<br /> |-pppd |-rc.news---innwatch---sleep<br /> |-rpc.mountd<br /> |-rpc.nfsd<br /> |-rpc.yppasswdd<br /> |-sendmail<br /> |-syslogd<br /> |-update<br /> |-xconsole<br /> |-xdm-+-X<br /> | `-xdm---Xsession---fvwm---FvwmPager<br /> |-xterm---bash---su---bash---tail<br /> |-2*[xterm---bash]<br /> |-xterm---bash---pstree<br /> \ -ypserv</code>
 + 
 +On voit par exemple ici que j'utilise « Fvwmpager » qui a lui-même été lancé par « fvwm ».
 + 
 +=== '''kill''' ===
 + 
 +La commande "'''kill'''" permet d'expédier un [[signal|signal]] à un processus.
 + 
 +Sa syntaxe est la suivante: '''kill [options] PID'''
 + 
 +Elle est souvent utilisée afin d'interrompre un programme sans [[IHM|IHM]] ou récalcitrant. Si j'ai lancé un programme donné, par exemple ''xeyes'', un [[processus|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|tuer]]»), je peux d'abord invoquer '''ps auxw''' pour connaître 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 S 10:53 0:00 xeyes
 + 596 0.0 0.0 3940 780 pts/2 S+ 10:53 0:00 grep xeyes
 + 
 +La première colonne présente le PID et la dernière le nom du programme invoqué.
 +La seconde ligne, ici, correspond au ''grep'' invoqué, qui se «voit ainsi lui-même».
 + 
 +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 lança). Si plusieurs processus y correspondent vous tentez ainsi de tous les tuer, mieux vaut utiliser l'option "-i" (pour [[interactif|'''i'''nteractif]]) qui demande confirmation avant de tenter d'arrêter 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 expédier le signal HUP puis INT en invoquant par exemple "kill -HUP ''[[PID|PID]]''". S'il fait la sourde oreille demander au noyau de le tuer sans condition en lui expédiant 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 nécessaires, par exemple fermer un fichier, donc peut endommager ou perdre des données voire causer des dysfonctionnements.
 + 
 +== [[redirection|Redirection]] (des [[entrées-sorties|entrées/sorties]] d'exécutables) ==
 + 
 +Lorsque vous saisissez des données à mesure reçues par un [[processus|processus]] vous fournissez des éléments à traiter, appelés [[entrées|entrées]], grâce au clavier. L'activité des processus produit des [[sorties|sorties]] (résultats), le plus souvent [[par défaut|par défaut]] affichés.
 + 
 +L'entrée de données peut se faire par un canal autre que le clavier, en indiquant par exemple un fichier qui contient les données à 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 expédier des données à chacun des [[périphérique|périphériques]] connectés, auquel correspond un « [[Les commandes fondamentales de Linux/Arborescence Linux|fichier spécial]] » dans le répertoire « /dev ».
 + 
 +Le [[shell|shell]] offre un moyen de gérer tout cela, en interconnectant à loisir ces canaux, grâce aux redirections.
 + 
 +Comment faire, par exemple, pour que la commande '''less''', qui affiche le contenu d'un fichier, le place plutôt dans un fichier? C'est le signe '''&gt;''' 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 résultat vers la [[sortie standard|sortie standard]] qui est le terminal.
 + 
 +Dans un deuxième temps, je veux placer le fichier « test » dans un fichier « test2 »: '''less test &gt; 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:
 +;&gt; ''nom_de_fichier'':redirige vers le fichier nommé ce que produit le programme. Exemple: '''ls > ls.txt'''
 +;&gt;&gt; ''nom_de_fichier'':permet comme le signe "&gt;" de rediriger le canal de sortie standard vers le fichier nommé. Si ce dernier existe déjà, ce qui provient du canal de sortie sera ajouté après ce qui y existe déjà alors qu'avec un simple "&gt;" le contenu existant serait remplacé ([[écraser|écrasé]])
 +;&lt; ''nom_de_fichier'':redirige le canal d'entrée standard, qui devient le contenu du fichier nommé. Exemple: '''less < ls.txt''' . Cela revient apparemment à ce que montre '''less ls.txt''' mais est subtilement différent car interdit à '''less''' d'accéder directement au fichier en demandant au shell d'en copier le contenu sur le canal d'entrée standard de '''less''', qui ne pourra savoir d'où il vient
 +;&amp;&gt; ''nom_de_fichier'':redirige sortie standard et erreur standard vers un seul et même fichier
 + 
 +Ce sont les [[forme|formes]] les plus fréquemment employées.
 + 
 +Toutes ces formes sont des versions simplifiées. Pour maîtriser tout cela il faut savoir que l'entrée standard dans un système Unix est le clavier, désigné par le [[descripteur de fichier|descripteur de fichier]] numéroté "0". [[par défaut|Par défaut]] le terminal est la sortie standard, ce descripteur de fichier est désigné par le chiffre "1". Il existe un troisième descripteur de fichier classique qui est le canal de sortie des erreurs produites par l'exécution d'une commande, désigné par le chiffre "2". Dans les exemples suivant la lettre ''n'' remplace l'un de ces chiffres:
 +;''n''&gt; ''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&gt; monprogramme.err'''
 +;''n''&lt; ''nom_de_fichier'':déclare le fichier nommé comme correspondant au descripteur
 +;&gt;&amp;''n'':duplique la sortie standard vers le fichier correspondant au descripteur ''n''
 +;&lt;&amp;''n'':duplique l'entrée standard depuis le fichier correspondant au descripteur ''n''
 + 
 +À première vue, on se demande bien à quoi servent certaines des redirections... On le découvre en employant le shell.
 + 
 +L'une des plus utiles redirections est '''2&gt;&amp;1''' qui redirige le canal des erreurs vers la sortie standard. Elle est très appréciée des utilisateurs lorsqu'ils souhaitent conserver la liste des messages d'erreur produits par un programme: '''''nom_du_programme'' 2&gt;&amp;1 erreurs''nom_du_programme''.tmp'''
 + 
 +Les canaux sont autant de tuyaux véhiculant les données, que l'on peut assembler librement grâce aux redirections fournies par le shell. Cela mène à la [[plomberie|plomberie]]...
 + 
 +== Interconnexion de commandes: les pipes ==
 + 
 +Le mot "[[pipe|pipe]]" désigne la barre verticale ("|") obtenue avec la [[combinaison de touches|combinaison de touches]] "[[AltGr|AltGr]] + 6" sur les clavier français classiques, ou "Altgr + 1" sur les claviers franco-belges.
 + 
 +Sur la [[ligne de commande|ligne de commande]] il permet de créer des « [[tube|tubes]] ».
 + 
 +Un tube passe le résultat d'une commande à une autre, sans passer par une [[#Redirection_.28des_entr.C3.A9es.2Fsorties_d.27ex.C3.A9cutables.29|redirection]] qui impliquerait un [[fichier temporaire|fichier temporaire]].
 + 
 +Un exemple permettra de comprendre tout cela.
 + 
 +Je veux savoir quels sont les [[processus|processus]] "bash" qui fonctionnent sur le système, mais je veux que la commande '''[[#ps|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 déjà il nous faudrait une première commande visant à obtenir la liste des processus "bash" actifs et à la placer dans un fichier temporaire: '''ps aux > temporaire.tmp''' . Puis nous pourrions mobiliser [[#Trouver_un_texte_.28grep.29|grep]]: '''grep bash temporaire.tmp''' afin d'obtenir le résultat souhaité. Il ne resterait plus qu'à nettoyer: '''[[#Supprimer_un_fichier_.28rm.29|rm]] temporaire.tmp'''.
 + 
 +Employer un tube réalise l'équivalent en sollicitant moins le système, 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 première citée produit soit immédiatement 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|lien]] est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même contenu sur le disque. Ce sont des sortes de « synonymes », d'[[alias|aliases]].
 + 
 +On en distingue deux sortes: « [[lien dur|dur]] » et « [[lien symbolique|symbolique]] ».
 + 
 +Un lien ''dur'' associe deux ou plusieurs fichiers à un même espace sur le disque, en préservant toutefois leurs indépendances lors de modifications de leurs contenus.
 + 
 +Exemple: créons un fichier (dont le contenu importe peu) nommé ''linux-test'' grâce à '''echo toto > linux-test'''
 + 
 +Puis créons un lien dur vers ce fichier: '''ln linux-test linux-test-lien-dur'''
 + 
 +Le fichier « linux-test-lien-dur » est créé dans le [[répertoire courant|répertoire courant]]. Si vous faites un '''ls -l''' vous constaterez que « linux-test » et « linux-test-lien-dur » ont la même taille. Ils semblent indépendants mais en réalité 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 créons 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 flèche révélant qu'il [[pointer|pointe]] sur « linux-test ». Toute référence au fichier « linux-test-lien-symb » impliquera en réalité le fichier « linux-test ».
 + 
 +En résumé 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|cible]] du lien) rendra le lien symbolique inutilisable car il ne correspondra plus à un fichier valide et sera donc dit "cassé" ([[pendouiller|pendouillant]]).
 + 
 +Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou sous un nom différent. Si le fichier est encombrant une copie par '''[[#Copier_un_fichier_ou_un_r.C3.A9pertoire_.28cp.29|cp]]''' entraînerait un gâchis alors qu'un lien permettra de réduire l'utilisation d'espace disque. Mieux: n'établir que des liens (au lieu de [[#cp|copier]]) garantit que toute modification concernera toutes les « copies » dispersées.
 + 
 +Syntaxe: '''ln nom-fichier-source nom-fichier-lien'''<br>
 +Arguments:
 +;-s: crée un lien symbolique. Dans la plupart des cas c'est ce qui est adéquat, le lien dur est en fait rarement employé.
 +;-b: réalise 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|écraser]].
 + 
 +== Variables d'environnement ==
 + 
 +bash propose des [[variable|variables]] dont le contenu modifie sa façon de travailler, donc l'environnement offert à l'utilisateur. Un fichier met en place une grande partie des variables d'environnement: « .bash_profile ».
 + 
 +Pour examiner le contenu d'une variable saisir '''echo $''nom_de_la_variable''.
 + 
 +Pour que les variables d'environnement soient prises en compte après une modification vous devez vous [[loguer|reloguer]] sur votre compte ou utiliser la commande '''source'''.
 + 
 +Vous trouverez par exemple la variable '''PATH''' qui définit les chemins où sont cherchés les fichiers exécutables [[invoquer|invoqués]]. Pour examiner son contenu: '''echo $PATH''. Le [[séparateur|séparateur]] est le caractère ':'. Si le PATH contient "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin", alors à chaque fois que le système tentera, sous votre compte, de [[lancer|lancer]] un exécutable il cherchera le fichier l'abritant tout d'abord dans le [[répertoire|répertoire]] nommé "/bin" puis, s'il ne l'y trouve pas, dans "/usr/bin", puis dans "sbin"...
 + 
 +Si vous souhaitez ajouter au PATH un répertoire "/home/delcros/bin" qui contient vos programmes personnels, il vous faudra l'ajouter en [[éditer|éditant]] le fichier "~/.bash_profile" de sorte qu'il contienne: "PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/home/delcros/bin"
 + 
 +La variable '''PS1''' contient la définition du [[prompt|prompt]]: '''PS1="[\u@\h \w \$] "''' affichera votre nom d'utilisateur (\u), puis le caractère "@", puis le nom de la machine (\h, pour ''h''ost), puis une [[espace|espace]], puis le répertoire de travail courant (\w, pour ''w''orking directory), puis un caractère '#' si vous êtes root et '$' sinon.
 + 
 +Voici un autre paramétrage de prompt: PS1="[\t \d \u@\h \w \$] "
 + 
 +== Alias ('''alias''') ==
 + 
 +Lorsque l'on utilise les mêmes [[commande|commandes]] avec de nombreuses [[option|options]] fixes il est utile de remplacer le tout par un ordre très court déclaré comme une sorte de synonyme. Il est appelé « [[alias|alias]] ».
 + 
 +Les alias sont [[déclarer|déclarés]] dans le fichier « ~/.bashrc ». Voici un exemple classique de déclaration d'alias: '''alias ll="ls -NlF --color=auto"''', qui crée une commande '''ll''' appelant '''ls''' avec des options améliorant la présentation.
 + 
 +La [[variable|variable]] "$*" désigne tous les paramètres communiqués lors de l'appel de l'alias:
 + $ alias perroquet="echo $*"
 + $ perroquet ceci est un test
 + ceci est un test
 + $ perroquet autre bidule
 + autre bidule
 + 
 +Plutôt que de saisir souvent '''tar -tvzf ''nom_de_fichier''''' ou pourra ainsi préférer créer un alias: '''alias montar="tar -tvzf $*"''' , puis employer '''montar ''nom_de_fichier'''''
 + 
 +La commande '''unalias''' supprime de façon définitive un alias.
 +Son option '''-a''' (pour '''all''') commande suppression de tous les alias.
 + 
 +Certains alias sont [[déclarer|déclarés]] dans des fichiers excutés par bash lors de son démarrage, par exemple « ~/.bashrc ». En ce cas il faut commenter la ligne définissant l'alias dans le dit fichier pour le supprimer définitivement, sinon il ne le sera que durant la [[session|session]] en cours.
 + 
 +On peut [[plomberie#Outillage_disponible|automatiser de façon plus ambitieuse]].
 + 
 += Pour aller plus loin =
 + 
 +La commande '''[[man|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".
 + 
 +* [[Les commandes fondamentales de Linux/Arborescence Linux|Arborescence Linux]]
 +* [[Les commandes fondamentales_de Linux/Programmation bash (script)|Introduction à la programmation en bash]]
 + 
 +[[Catégorie:bash]]

Version actuelle

apt://vlc



Sommaire

Introduction

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 allons explorer ce qu'offre le shell le plus commun sous Linux, donc une partie de ce que peut faire un utilisateur capable de diriger la machine en créant des lignes de commandes plutôt qu'en se contentant d'un cliquodrôme.

Manœuvres préliminaires

Employer, pour explorer, une machine sans importance, dont l'arrêt ou la destruction du contenu ne poserait aucun problème.

Recommandation: employer un émulateur de PC en Javascript animant Linux publié en http://bellard.org/jslinux/. Cliquer sur le lien conduit directement à une machine logicielle grâce à laquelle vous utiliserez immédiatement Linux. Merci F. Bellard!

L'amorcer sous Linux, par exemple grâce à un live-CD.

REMARQUE : SOUS LINUX (comme sous tout système UNIX) LES MINUSCULES ET LES MAJUSCULES NE SONT PAS ÉQUIVALENTES.

Commandes fondamentales

Mise en place

La plupart des distributions Linux démarrent d'emblée, sitôt le système amorcé, une interface graphique fournie par un ensemble logiciel appelé X Window et donnant à l'écran d'accueil une apparence agréable dont voici un exemple (cliquer sur l'image pour zoomer): frameless|center

Si X Window n'est pas démarré vous ne verrez aucune fenêtre et surtout des caractères, quasi pas de graphisme sauf peut-être un Tux en haut à gauche, du charabia terminé par la mention « login: » suivie d'un curseur clignotant: frameless

Connectez-vous au système en tant qu'utilisateur root, donc saisir root en guise de «login», puis le mot de passe («Password») adéquat (qui a été défini lors de l'installation ou est fourni par la documentation).

Si la machine emploie X Window explorez les menus afin de démarrer un « terminal » (peut-être appelé « Terminal », « Konsole », « KTerm », « Gnome terminal », « xterm », « rxvt »...), par exemple via le menu «Applications», «Accessoires» ou «Système».

Vous vous retrouvez devant le shell, qui est un logiciel grâce auquel vous pourrez passer des commandes, par exemple afin de démarrer des logiciels. Plusieurs shells existent, le plus répandu est nommé bash (csh et zsh en sont d'autres).

Ce que vous voyez est son invite.

Arrêter le système (shutdown)

Ne jamais éteindre brutalement la machine, il FAUT INFORMER Linux de votre souhait de l'arrêter afin qu'il prenne les dispositions nécessaires. Pour cela invoquer, sous le compte root:

shutdown -r now
réamorce immédiatement l'ordinateur.
shutdown -h now
arrête complètement le système. Vous pouvez éteindre l'ordinateur lorsque sera affiché:
System halted
The system is halted
shutdown -h +15
arrête complètement et automatiquement le système 15 minutes plus tard.

echo et variables

La commande de shell echo $SHELL fournit le nom du shell courant. La saisir, puis soumettre grâce à la touche « Entrée », évidemment! En pratique echo est la commande proprement dite et "$SHELL" l'argument que nous lui fournissons, qui précise sur quoi elle doit travailler. Les arguments suivent la commande et lui indiquent ce qu'elle doit faire, sur quoi, comment... echo se contente de répéter les arguments qui lui sont fournis, de sorte que echo toto affiche "toto" et echo titi tutu affiche "titi tutu":

« $SHELL » désigne le contenu d'une variable (c'est ce que le signe dollar placé en préfixe révèle) nommée « SHELL ».

echo $SHELL, par conséquent, affiche le contenu d'une variable nommée « SHELL ».

Se déplacer dans l'arborescence de répertoires (cd)

Nous traiterons d'un shell nommé bash.

Son prompt, paramétrable, ressemble souvent à ceci : [root@mistra /root]$ (mistra est le nom de ma machine). Le premier root signifie que vous vous êtes connecté sous le compte utilisateur de l'administrateur système. Vous êtes donc en pleine possession de la machine, vous pouvez faire absolument n'importe quoi, jusqu'à supprimer des fichiers nécessaires à son fonctionnement... faites donc très attention... En théorie il ne faut utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits « d'utilisateurs » permettent sinon de travailler en temps normal sans risquer de mettre le système en panne en cas d'action inconsidérée, de « mauvaise manipulation ». Nous exposerons ci-après comment créer un compte utilisateur.

Dans le prompt [root@mistra /root]$ la mention /root exprime que vous vous trouvez dans un répertoire nommé « /root ». Sous Unix un répertoire n'est pas essentiellement différent d'un fichier, vous lirez ou entendrez donc souvent le mot « fichier » utilisé pour désigner un objet à la nature non déterminée qui peut être un fichier ou un répertoire.

Tout fichier (ou répertoire...) se trouve à un endroit précis, appelé son chemin d'accès, constitué de la série des noms des répertoires qui y mènent, suivie de son nom. Les noms des répertoires y sont séparés par le caractère réservé à cet effet nommé « barre oblique » et plus communément appelé slash (sous Windows ou MS-DOS c'est le caractère "anti-slash", "\", qui est utilisé à cet effet). Le tout premier répertoire, présent sur tous les systèmes, est appelé « / » et tous les autres y prennent plus ou moins directement racine). Si un répertoire nommé « répertoire1 » contient un répertoire appelé « répertoire2 » recelant lui-même un fichier « monfichier » le chemin complet de ce dernier est « /répertoire1/répertoire2/monfichier ».

Actuellement, donc, vous vous trouvez connecté sous le compte de l'administrateur système et dans le répertoire appelé « /root ».

Déplaçons-nous dans la "racine" du système en saisissant cd /.

Faites bien attention de séparer par un espace cd et "/" car Unix exige une grande précision. Soumettez la commande au système grâce à la touche « Entrée », évidemment ! En pratique cd est la commande et "/" l'argument que nous lui fournissons. Les arguments suivent la commande et sont parfois précédés d'un tiret.

Vous êtes maintenant dans le répertoire 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  boot  cdrom  dev  devfs  etc  floppy  home  initrd  lib  lost+found  mnt  opt  proc  root  sbin  sys  tmp  usr	var

Si certains fichiers ou répertoires manquent sur votre machine ce n'est pas important.

Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent simplement appelés « 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 répertoire en utilisant la commande ls.

Maintenant allons voir ce que contient le répertoire /etc (aperçu lorsque nous avons listé le contenu du répertoire racine /). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans le répertoire racine et nous nous rendons ensuite dans le répertoire etc; soit nous nous rendons immédiatement dans le répertoire /etc.

Méthode n°1 : cd / (pour se rendre à la racine) puis cd etc

Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire « /etc » en écrivant le chemin complet :

Méthode n°2 : cd /etc

... et nous voici directement placés dans le répertoire « /etc ». Nous avons indiqué que pour se rendre dans le répertoire « etc », il fallait d'abord se rendre dans le répertoire 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 déplace automatiquement dans notre répertoire personnel, également appelé « répertoire utilisateur » ou « home, celui où nous pouvons stocker nos travaux. Si vous êtes l'administrateur système la commande cd ~ vous placera dans le répertoire « /root ». Dans le cas où je suis (je suis loggé en tant qu'utilisateur « delcros ») je vais automatiquement me retrouver dans le répertoire /home/delcros. Les répertoires des utilisateurs non dotés de privilèges se trouvent d'ordinaire sous /home.

Pour revenir dans votre répertoire personnel cd ~ est la commande orthodoxe, toutefois cd suffit.

Dans quel répertoire suis-je actuellement ? (pwd)

Lorsque l'on se déplace dans les répertoires, par défaut 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 même nom court corresponde à plusieurs répertoires bien distincts, donc que seuls les chemins qui y mènent 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 connaître le chemin du répertoire où l'on se trouve on utilise la commande pwd (print name of current working directory).

Lister le contenu d'un répertoire (ls)

La commande ls permet d'obtenir beaucoup d'informations sur les fichiers et répertoires.

Déplaçons-nous par exemple dans le répertoire « /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 caractères donnés. Gagnons le répertoire "/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 définies par nous (utilisateur), en respectant un certain nombre de conventions, et qui est ensuite appliqué (jeté) par le shell afin de sélectionner des noms de fichiers qui y correspondent.

Les principales conventions valides dans ce contexte, donc lorsque l'on définit un motif de sélection de noms de fichiers destiné au shell, sont:

  • l'étoile (ou plutôt l'astérisque) est un caractère générique sélectionnant n'importe quel ensemble de caractères
  • le point d'interrogation sélectionnant n'importe quel caractère

Lorsque nous invoquons ls g*:

  1. dans un premier temps le shell applique le motif (jette le filet) et sélectionne les noms de fichiers du répertoire courant qui correspondent au motif
  2. dans un deuxième temps le shell lance ls en lui communiquant ce qu'il a sélectionné, donc par exemple (si les seuls fichiers du répertoire courant dont le nom commence par "g" sont « grep », « gunzip », « gzexe » et « gzip »): ls grep gunzip gzexe gzip

Cette interprétation de motif puis sélection des noms de fichiers y correspondant est en anglais appelée "glob". Elle fonctionne pour toutes les commandes, on peut donc saisir echo g*... et obtenir le même résultat qu'avec ls g*.

On peut également interdire au shell d'effectuer ce « glob » en plaçant l'argument entre apostrophes. Exemple: ls 'g*', qui produit ici « ls: ne peut accéder g*: Aucun fichier ou répertoire de ce type », car ls cherche bien entendu alors un fichier nommé "g*" (g suivi d'un astérisque), qui n'existe pas.

echo 'g*', en revanche, fonctionne parfaitement puisque 'g*' devient alors un littéral qui sera traité par echo comme n'importe quelle autre chaîne... qu'il se contente donc d'afficher, indépendamment de ce que contient le répertoire courant.

Options

Voici quelques options intéressantes de la commande ls:

ls -l liste les attributs de fichiers (les droits de lecture, d'écriture et d'exécution, le propriétaire, le groupe, la taille en octets, sa date de création ou de modification).

total 3615

-rwxr-xr-x    1 root     root         2716 Apr 23  02:09  arch
-rwxr-xr-x    1 root     root        56380 Dec 23  2008   ash
lrwxrwxrwx    1 root     root            4 May 10  20:01  awk -> gawk
-rwxr-xr-x    1 root     root        18768 Mar  8  19:17  basename
-rwxr-xr-x    1 root     root       300668 Sep  4  2008   bash
lrwxrwxrwx    1 root     root            3 May 10  19:59  bsh -> ash
-rwxr-xr-x    1 root     root        16584 Dec 16  2008   cat
-rwxr-xr-x    1 root     root        17408 Nov 26  2008   chgrp

Ici, tous les fichiers appartiennent à l'administrateur système (root) et à son groupe (root). Nous traiterons du sens de la fin de chaque ligne, qui contient parfois une flèche visible ici sur la ligne awk -> gawk, dans la section consacrée aux liens ln.

-a liste tous (penser au mot "all") les fichiers du répertoire, y compris les fichiers cachés. Cette option est très utile lorsque l'on se trouve dans son répertoire personnel car il contient les fichiers de configuration de l'utilisateur dont les noms commencent généralement par un point et seule l'option -a permet de détecter leur existence.

D'autres options de ls sont utiles:

-m
affiche en séparant par une virgule au lieu de les présenter en colonnes.
-t
trie par date, c'est-à-dire en les classant du récent au plus ancien (penser à time).
-F
trie par type. Ainsi un fichier suivi d'un slash (/) est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la section consacrée à ln).
-S
trie par ordre de taille décroissante (penser à size).
-X
trie par extension.
-r
trie par ordre alphabétique 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 commençant par les plus anciens pour finir par les plus récents.

Voir le contenu d'un fichier (less)

La commande less permet de lire le contenu d'un fichier texte. Nous avons vu que le répertoire /root contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes avec un agencement et une syntaxe particulière. 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 précédente tapez sur « b » (back). Pour quitter tapez « q ».

Une option utile de less est -N qui numérote les lignes (la numérotation de ligne apparaît à l'écran mais le fichier n'en est pas pour autant modifié).

Si vous souhaitez connaître les autres options de less invoquez less --help.

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

joe

joe est simple et léger. C'est l'éditeur que j'utilise pour faire une petite modification dans un fichiers de configuration.

Lançons 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 caractère ^ (circonflexe) représente par convention la touche Control, donc ce que nous présentons 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 français de joe les questions qu'il pose sont en français... mais toute réponse qu'il doit analyser doit être fournie en anglais. Exemple: à la question « Enregistrer (o,n,^C) ? » il faut, pour accepter, répondre « y » (yes).

Configuration

En tant qu'utilisateur root éditer, dans le répertoire « /etc/joe/ », les fichiers nommés « joerc » et « jmacsrc » de sorte que

  • « -asis » se trouve en début de ligne (pas d'espace avant le tiret), afin de pouvoir éditer des caractères accentués
  • « -backpath path » se trouve en début de ligne et soit suivi de « /tmp », la ligne devenant donc « -backpath /tmp », afin que les fichiers de sauvegarde de la précédente version d'un fichier édité se trouvent dans « /tmp » plutôt que dans le répertoire courant

Emacs

Emacs date de la fin des années 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 très 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... ;-) )

Lançons Emacs: emacs

Les touches Ctrl (Control) et Meta (qui correspond souvent à Alt) permet de le commander.

Ouvrons un fichier nommé « linux-test » grâce à la combinaison de touches suivante : Ctrl-x Ctrl-f, donc enfoncer la touche Control et la maintenir en position basse, taper « x » puis « f ». Vous voyez apparaître en bas la mention Find File : ~/. Saisir le nom du fichier et valider grâce à la touche Entrée. Son contenu apparaît et vous pouvez le modifier à souhait. Les touches Backspace et Suppr fonctionnent comme sous n'importe quel éditeur. Pour sauver tapez la combinaison de touches suivante: Ctrl-x Ctrl-s.

Si vous êtes bloqué après avoir effectué de mauvaises manipulations, tapez Ctrl-g.

Si vous avez fait des erreurs, Ctrl-x u supprime les dernières modifications.

Si vos touches de direction ne fonctionnent pas: Ctrl-p: monter d'une ligne. Ctrl-n: descendre d'une ligne. Ctrl-f: avancer d'un caractère. Ctrl-b: reculer d'un caractère. Ctrl-v: avancer d'une page. Alt-v: reculer d'un écran. Ctrl-d: supprimer le caractère sur lequel le curseur se trouve. Ctrl-s: recherche incrémentale. Meta-%: rechercher et remplacer. Ctrl-x Ctrl-c: quitter Emacs

Avec cette rapide présentation vous pourrez déjà "barboter". Il m'est impossible de décrire dans ce document les milliers de fonctions disponibles... si vous souhaitez en savoir plus, cette séquence vous permettra de consulter les panneaux d'aide: Ctrl-h. Ou bien lancez le tutoriel: Ctrl-h t

joe est Emacs

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

Créer un compte utilisateur

Préambule

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 système (root), car nous risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux nécessaires à son bon fonctionnement. Nous allons donc créer un compte utilisateur, lui attribuer un mot de passe et nous loguer sur ce compte.

Exécutez les commandes suivantes, une explication détaillée interviendra ensuite dans la partie consacrée à l'administration système:adduser le_nom_de_choix (votre prénom par exemple, mais sans accent et si possible long de moins de 8 caractères)

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.

Invite (prompt) de root ou d'utilisateur

L'invite proposée lorsque l'on est connecté sous compte root est souvent différente 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 terminée par un signe dièse (#) et celle d'un utilisateur (non root) par un signe dollar ($).

Déclarer qui est propriétaire d'un fichier (chown)

Préambule: cette section nécessite d'être administrateur système, 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 ajoutées pour simplifier l'exposé)
delcros est le nom du propriétaire du fichier et users est celui du groupe auquel appartient le fichier.

L'administrateur système peut décider des utilisateurs membres d'un groupe, et permettre à un utilisateur de déterminer lui même qui fera partie du groupe. Le fichier /etc/group décrit les groupes.

Je peux décider par exemple que le fichier « linux-test » n'appartient plus à l'utilisateur "delcros" mais à l'utilisateur "thomas":

[root@mistra delcros]# chown thomas linux-test

Vérifions:

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

Pour changer à la fois le propriétaire 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

exécuter dans un shell

exécuter le fichier linux-test

./linux-test

Copier un fichier ou un répertoire (cp)

La syntaxe est: cp [option] nom-fichier(s)-origine nom-fichier-ou-répertoire-destination

Par exemple pour faire une copie d'un fichier nommé « linux-test » en un fichier « linux-test2 » il suffit de faire: cp linux-test linux-test2

ATTENTION: si vous effectuez une copie d'un fichier sur un fichier qui existe dejà, son contenu sera remplacé par celui de l'autre!

Si vous souhaitez copier le fichier linux-test dans un répertoire (par exemple « /tmp »):cp linux-test /tmp. Pour lui donner un autre nom: cp linux-test /tmp/linux-test2

Nous venons de voir que l'utilisation de cp est dangereuse et l'on risque parfois d'effacer des fichiers importants. Ses options peuvent nous épargner des déconvenues.

Options

-i
avertit l'utilisateur de l'existence d'un fichier du même nom et lui 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 `linux-test2'? (ou, en version française, cp: écraser `linux-test2'?) apparaît. Répondre par "y" (yes) ou "n". En version française "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 copiés (pensez à verbeux). Utile si vous souhaitez voir le bon déroulement de la "multicopie".
-p
lors de la copie les attributs du fichier seront préservés (propriétaire, groupe, date de création... lire chown).

-r

L'option -r copie de manière récursive, donc l'ensemble d'un répertoire et de ses sous-répertoires.

Exemple: je possède dans mon répertoire « /home/delcros/personnel » un répertoire intitulé « mygale » qui contient 3 sous répertoires (« 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 répertoire « mygale » ainsi que ses sous-répertoires dans mon répertoire « /home/delcros/ » en commençant par me placer dans le répertoire 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 résultat ...

J'ai par exemple déjà copié dans le répertoire d'un utilisateur (pour qu'il en dispose) de la documentation qui se trouvait dans un répertoire « doc » dont le propriétaire était l'administrateur système. Pour cela j'ai tout d'abord copié tout le répertoire et ses sous-répertoires dans le répertoire de l'utilisateur grâce à la commande cp et à son option -r puis ai modifié les droits de propriétés de la copie et de ses sous répertoires: [root@mistra delcros]# chown -R delcros.users doc. L'option -R (recursive) de chown le contraint à propager son action dans les sous-répertoires, établissant de cette seule commande le propriétaire de plusieurs répertoires et de leurs fichiers.

Déclarer les droits d'accès (permissions) accordés (chmod)

Linux permet de spécifier les modes d'accès (à un fichier ou répertoire) autorisés, que l'on appelle droits d'accès 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 décrites que plus tard.

Le nom du fichier, « bidule », apparaît à 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-- révèle la nature du fichier ainsi que les permissions (droits d'accès).

Le premier de ces 10 caractères 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 réalité le fichier est un répertoire (directory). Si on observait un l, alors le fichier serait un lien.

Décomposons les 9 derniers caractères en 3 segments: rw- , r-- et r--

  1. Le premier révèle les droits accordés au propriétaire du fichier
  2. Le deuxième révèle les droits accordés aux comptes qui ne sont pas celui du propriétaire et faisant partie du groupe auquel appartient le fichier
  3. Le troisième révèle les droits accordés aux autres comptes

Dans chaque segment le premier caractère correspond au droit de lecture (noté r, penser à read), le deuxième correspond au droit d'écriture (write) et le troisième correspond au droit d'exécution (x, execution). Si à la place d'un des ces caractères 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 propriétaire a le droit de le modifier. Personne ne peut lancer l'exécution de ce fichier puisque x n'apparaît pas.

Lorsque l'on traite de permissions la lettre u (user) désigne par convention le propriétaire du fichier, la lettre g le groupe d'utilisateurs qui possède le fichier et la lettre o (others) les autres utilisateurs. La lettre a (all) fait référence à tous les utilisateurs. Cette notation est la plus facile à employer avec la commande de modification des permissions chmod.

Seul le propriétaire 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é « linux-test »:

[delcros@mistra delcros]$ chmod a+wr linux-test
  • chmod est la commande changeant les « modes d'accès »
  • a indique que tous (all) les segments seront touchés par la modification des permissions
  • + signifie que l'on accorde une ou plusieurs permission(s) supplémentaire(s), qui s'ajoute à celles qui sont déjà établies. Pour en retrancher il suffit d'utiliser en lieu et place le signe -. Pour établir les permissions indépendamment de ce qu'elles sont déjà 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 vérifier que tout a bien fonctionné, faites un ls -l linux-test qui montrera une première colonne contenant -rw-rw-rw-

Pour supprimer les droits d'écriture et de lecture accordés aux membres du groupe propriétaire du fichier ainsi qu'aux autres utilisateurs: chmod go-wr linux-test

  • dans go le g signifie que la commande affectera les permissions accordées au groupe propriétaire, et le o qu'elle affectera également celles que l'on accorde aux « autres utilisateurs » (ceux qui ne sont ni le propriétaire, 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 propriétaire du fichier ne puisse pas exécuter un fichier:

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

Pour définir 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 exécution pour le propriétaire, que le groupe n'ait le droit que de le lire et exécuter, 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 propriétaire:

chmod g-w,o-w linux-test

Lorsqu'un programme (quel qu'il soit, y compris le shell) tente d'accéder à un fichier, le noyau Unix sait pour quel utilisateur le programme fonctionne. Si le fichier appartient à l'utilisateur les droits accordés au propriétaire s'appliquent. Sinon, si le fichier appartient au groupe auquel l'utilisateur appartient, alors les droits accordés au groupe auquel le fichier appartient s'appliquent. Sinon les droits accordés aux autres utilisateurs seront respectés. 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 accordée

Il n'est pas stupide d'interdire ainsi l'accès 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'accéder 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: détruire un fichier protégé en écriture fichier régulier `important.txt'?

Expression numérique des permissions (système octal)

Il n'est pas nécessaire d'assimiler cette section, elle n'est destinée qu'à éclairer des choses étranges parfois rencontrées.

Une autre façon de déclarer (définir) les permissions existe. Elle repose sur une notation numérique remplaçant, d'une part par un 0 (zéro) chaque droit non accordé (ceux que ls révèle au moyen d'un tiret) et, d'autre part, les autres (accordés!) par un 1 (chiffre un).

Pour chaque fichier les trois segments de permission (le premier décrit les droits du propriétaire, le deuxième ceux des membres du groupe auquel appartient le fichier, le troisième 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 système numérique de notation des permissions parfois adopté est dit octal.

  Binaire -- Logique ----- Décimal
000 -------- (---) ------- 0
001 -------- (--x) ------- 1
010 -------- (-w-) ------- 2
011 -------- (-wx) ------- 3
100 -------- (r--) ------- 4
101 -------- (r-x) ------- 5
110 -------- (rw-) ------- 6
111 -------- (rwx) ------- 7

'chmod digère 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 propriétaire) 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 exprimés dans l'ordre, le premier pour le propriétaire, le deuxième pour le groupe, le troisième pour les autres.

Supprimer un fichier (rm)

Effectuons à nouveau une copie du fichier « linux-test » (tapez au préalable cd pour vous retrouver dans votre répertoire 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 répertoire et ses sous répertoires (attention, c'est TRÈS dangereux)
-f
supprime les fichiers qu'il est interdit d'écrire ainsi que les répertoires, sans demande une confirmation (à utiliser avec précaution...)

Créer un répertoire (mkdir)

Pour créer un répertoire, il suffit de taper la commande suivante (ici je crée dans « /home/delcros » un répertoire nommé "personnel"): mkdir personnel

Une option de mkdir est souvent utile: mkdir -p permet de créer une suite de répertoire.

Supposons que je veuille créer dans mon répertoire /home/delcros la suite de répertoires 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 créer la suite de répertoires "parents" le plus simplement du monde: mkdir -p doc/mygale/mail

Déplacer ou renommer un fichier (mv)

Pour comprendre la commande mv (penser à move), voyons une suite de commandes qui effectuent des opérations différentes: 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-répertoire: renomme le répertoire « personnel » en « mon-répertoire ».

mv perso /home/delcros/mon-répertoire: déplace le fichier « perso » dans le répertoire /home/delcros/mon-répertoire

Options

-b
effectue une sauvegarde (penser à backup) des fichiers avant de les déplacer: mv -b mon-répertoire/perso /mon-répertoire/linux-test renomme le fichier « perso » en « linux-test », cependant vous trouverez dans le répertoire une sauvegarde de perso nommée « perso~ ».
-i
demande pour chaque fichier et chaque répertoire s'il peut ou non déplacer fichiers et répertoires (penser à interactif)
-u
demande à mv de ne pas supprimer le fichier si sa date de modification est la même ou est plus récente que son remplaçant (penser à update).

Chercher un fichier ou répertoire (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 répertoire « /home »
"-name"
indique que nous voulons trouver un fichier portant un nom donné.

Pour chercher tous les fichiers commençant par "linux-tes" et définir à partir de quel répertoire 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 répertoire vous pourrez utilisez cette option ainsi: find /usr -type d .... Ici, on demande à find de trouver des répertoires, et non des fichiers, grâce à l'option -type d (penser à directory, qui signifie répertoire)

-exec

Exécute une commande sur les fichiers trouvés.

La différence entre -exec et -ok est que la deuxième vous demandera pour chaque fichier trouvé si vous souhaitez réellement réaliser l'opération: 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 séquence d'échappemment.

locate

La commande locate a la même mission que find mais ne cherche pas le fichier dans l'arborescence de répertoires fournie en argument mais explore une base de données qui contient la liste des fichiers et répertoires existants. Cette base de données est en général automatiquement générée une fois par jour par le système grâce à une commande appelée updatedb. La syntaxe est:locate nom_du_fichier. Bien que la commande locate soit très intéressante, elle ne possède pas la puissance des options de find. De plus, si vous créez des fichiers pendant la journée et que vous les recherchez avec elle, il n'est pas sûr que la base de données ait été remise à jour. Bref, locate est un complément de find.

Trouver un texte (grep)

La commande grep est un pivot des commandes UNIX. Elle cherche une expression regulière 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 numéro de chaque ligne contenant un résultat. Une autre option très utile est -l qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche.

Compactage et décompactage (compress, gzip, bzip2, 7zip)

compress

Il est obsolète, ne pas compacter grâce à lui.

Si vous rencontrez un fichier d'extension .Z vous pouvez le décompacter grâce à gzip: gzip -d nom_du_fichier.Z.

gzip

Efficace et très répandu.

Pour compacter un fichier: gzip nom_du_fichier
Pour décompacter: gzip -d nom_du_fichier.gz

bzip2

7zip

Archivage de données (tar)

La commande tar gère des archives, contenant chacune au moins un répertoire ou fichier.

Vous aurez souvent besoin de tar xzf nom_du_fichier.tar.gz , qui décompacte 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 révèle qu'il l'est avec gzip).

Les arguments employés dans la commande précédente (« xzf ») peuvent être ainsi compris:

x
(extraction) déclenche l'extraction de certains fichiers d'une archive (lorsque l'on ne spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les extrait tous)
z
décompacte l'archive grâce à gzip
f
traite un fichier-archive dont le nom suit (ici: « nom_du_fichier.tar.gz »)

Pour connaître la liste des fichiers contenus dans une archive compactée 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 répertoire « « /home/delcros/ » » la commande suivante créera une archive du répertoire « /home/delcros/personnel »: tar cvjf personnel.bz2 personnel

c
tar va créer une archive
j
tar compacte l'archive grâce à bzip2

Connaître l'espace disque utilisé (df et du)

La commande df permet de connaître l'emplacement de montage des systèmes de fichiers accessibles sur votre système et leurs capacités restantes.

La commande du permet de connaître l'encombrement sur disque du répertoire spécifié et ses sous répertoires.

Options

-c
total cumulé
-h
adoption d'unités facilitant la lecture du résultat par un humain

Contrôler les ressources utilisées par les processus (top, ps, kill)

top

La commande top affiche en continu des informations décrivant l'activité du système. Elle permet surtout de suivre les ressources que les processus utilisent (quantité de mémoire, pourcentage de CPU...).

Vous pourrez utiliser l'option -d pour spécifier des délais de rafraîchissement (en secondes).

Sous top il est possible d'expédier de manière 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 défaut 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   TTY STAT  TIME COMMAND
      341   p1    S     0:00    bash
      344   p2    S     0:00    bash
      1039  p3    S     0:00    bash
      1219  p3    R     0:00    ps

Le PID est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifié dans le système 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'exécution (R comme "run"). Ce dernier n'est autre que la commande ps que nous venons de lancer, qui se « voit elle-même ». Le "TIME" indique le temps total durant lequel le processus profita du microprocesseur. "COMMAND" précise, comme son nom l'indique, la commande qui créa le processus.

Une simple commande ps n'indique pas tous les processus du système. Le simple fait de lancer ps nous a juste indiqué les processus associés à un terminal qui dépendent de l'utilisateur courant. En fait, il est tout a fait probable que d'autres processus non liés à un terminal soient actifs: ps -ax les révélera.

Si en plus vous voulez connaître les utilisateurs associés à 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 utilisées par le processus. "%MEM" montre en pourcentage la proportion de mémoire vive dans la mémoire utilisée par le processus, elle-même 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-dépendances: 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-même été lancé par « fvwm ».

kill

La commande "kill" permet d'expédier un signal à un processus.

Sa syntaxe est la suivante: kill [options] PID

Elle est souvent utilisée afin d'interrompre un programme sans IHM ou récalcitrant. 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 connaître 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    S    10:53   0:00 xeyes
    596  0.0  0.0   3940   780 pts/2    S+   10:53   0:00 grep xeyes

La première colonne présente le PID et la dernière le nom du programme invoqué. La seconde ligne, ici, correspond au grep invoqué, qui se «voit ainsi lui-même».

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 lança). 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'arrêter 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 expédier 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 expédiant 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 nécessaires, par exemple fermer un fichier, donc peut endommager ou perdre des données voire causer des dysfonctionnements.

Redirection (des entrées/sorties d'exécutables)

Lorsque vous saisissez des données à mesure reçues par un processus vous fournissez des éléments à traiter, appelés entrées, grâce au clavier. L'activité des processus produit des sorties (résultats), le plus souvent par défaut affichés.

L'entrée de données peut se faire par un canal autre que le clavier, en indiquant par exemple un fichier qui contient les données à 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 expédier des données à chacun des périphériques connectés, auquel correspond un « fichier spécial » dans le répertoire « /dev ».

Le shell offre un moyen de gérer tout cela, en interconnectant à loisir ces canaux, grâce aux redirections.

Comment faire, par exemple, pour que la commande less, qui affiche le contenu d'un fichier, le place plutôt 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 résultat vers la sortie standard qui est le terminal.

Dans un deuxième 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 déjà, ce qui provient du canal de sortie sera ajouté après ce qui y existe déjà alors qu'avec un simple ">" le contenu existant serait remplacé (écrasé)
< nom_de_fichier
redirige le canal d'entrée standard, qui devient le contenu du fichier nommé. Exemple: less < ls.txt . Cela revient apparemment à ce que montre less ls.txt mais est subtilement différent car interdit à less d'accéder directement au fichier en demandant au shell d'en copier le contenu sur le canal d'entrée standard de less, qui ne pourra savoir d'où il vient
&> nom_de_fichier
redirige sortie standard et erreur standard vers un seul et même fichier

Ce sont les formes les plus fréquemment employées.

Toutes ces formes sont des versions simplifiées. Pour maîtriser tout cela il faut savoir que l'entrée standard dans un système Unix est le clavier, désigné par le descripteur de fichier numéroté "0". Par défaut le terminal est la sortie standard, ce descripteur de fichier est désigné par le chiffre "1". Il existe un troisième descripteur de fichier classique qui est le canal de sortie des erreurs produites par l'exécution d'une commande, désigné 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
déclare le fichier nommé comme correspondant au descripteur
>&n
duplique la sortie standard vers le fichier correspondant au descripteur n
<&n
duplique l'entrée standard depuis le fichier correspondant au descripteur n

À première vue, on se demande bien à quoi servent certaines des redirections... On le découvre 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 très appréciée 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 véhiculant les données, que l'on peut assembler librement grâce aux redirections fournies par le shell. Cela mène à la plomberie...

Interconnexion de commandes: les pipes

Le mot "pipe" désigne la barre verticale ("|") obtenue avec la combinaison de touches "AltGr + 6" sur les clavier français classiques, ou "Altgr + 1" sur les claviers franco-belges.

Sur la ligne de commande il permet de créer des « tubes ».

Un tube passe le résultat 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 système, 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 déjà il nous faudrait une première 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 résultat souhaité. Il ne resterait plus qu'à nettoyer: rm temporaire.tmp.

Employer un tube réalise l'équivalent en sollicitant moins le système, 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 première citée produit soit immédiatement 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 spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même 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 même espace sur le disque, en préservant toutefois leurs indépendances lors de modifications de leurs contenus.

Exemple: créons un fichier (dont le contenu importe peu) nommé linux-test grâce à echo toto > linux-test

Puis créons un lien dur vers ce fichier: ln linux-test linux-test-lien-dur

Le fichier « linux-test-lien-dur » est créé dans le répertoire courant. Si vous faites un ls -l vous constaterez que « linux-test » et « linux-test-lien-dur » ont la même taille. Ils semblent indépendants mais en réalité 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 créons 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 flèche révélant qu'il pointe sur « linux-test ». Toute référence au fichier « linux-test-lien-symb » impliquera en réalité le fichier « linux-test ».

En résumé 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 répertoires, ou sous un nom différent. Si le fichier est encombrant une copie par cp entraînerait un gâchis alors qu'un lien permettra de réduire l'utilisation d'espace disque. Mieux: n'établir que des liens (au lieu de copier) garantit que toute modification concernera toutes les « copies » dispersées.

Syntaxe: ln nom-fichier-source nom-fichier-lien
Arguments:

-s
crée un lien symbolique. Dans la plupart des cas c'est ce qui est adéquat, le lien dur est en fait rarement employé.
-b
réalise 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.

Variables d'environnement

bash propose des variables dont le contenu modifie sa façon de travailler, donc l'environnement offert à l'utilisateur. Un fichier met en place une grande partie des variables d'environnement: « .bash_profile ».

Pour examiner le contenu d'une variable saisir echo $nom_de_la_variable.

Pour que les variables d'environnement soient prises en compte après une modification vous devez vous reloguer sur votre compte ou utiliser la commande source.

Vous trouverez par exemple la variable PATH' qui définit les chemins où sont cherchés les fichiers exécutables invoqués. Pour examiner son contenu: echo $PATH. Le séparateur est le caractère ':'. Si le PATH contient "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin", alors à chaque fois que le système tentera, sous votre compte, de lancer un exécutable il cherchera le fichier l'abritant tout d'abord dans le répertoire nommé "/bin" puis, s'il ne l'y trouve pas, dans "/usr/bin", puis dans "sbin"...

Si vous souhaitez ajouter au PATH un répertoire "/home/delcros/bin" qui contient vos programmes personnels, il vous faudra l'ajouter en éditant le fichier "~/.bash_profile" de sorte qu'il contienne: "PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/home/delcros/bin"

La variable PS1 contient la définition du prompt: PS1="[\u@\h \w \$] " affichera votre nom d'utilisateur (\u), puis le caractère "@", puis le nom de la machine (\h, pour host), puis une espace, puis le répertoire de travail courant (\w, pour working directory), puis un caractère '#' si vous êtes root et '$' sinon.

Voici un autre paramétrage de prompt: PS1="[\t \d \u@\h \w \$] "

Alias (alias)

Lorsque l'on utilise les mêmes commandes avec de nombreuses options fixes il est utile de remplacer le tout par un ordre très court déclaré comme une sorte de synonyme. Il est appelé « alias ».

Les alias sont déclarés dans le fichier « ~/.bashrc ». Voici un exemple classique de déclaration d'alias: alias ll="ls -NlF --color=auto", qui crée une commande ll appelant ls avec des options améliorant la présentation.

La variable "$*" désigne tous les paramètres communiqués lors de l'appel de l'alias:

$ alias perroquet="echo $*"
$ perroquet ceci est un test
ceci est un test
$ perroquet autre bidule
autre bidule

Plutôt que de saisir souvent tar -tvzf nom_de_fichier ou pourra ainsi préférer créer un alias: alias montar="tar -tvzf $*" , puis employer montar nom_de_fichier

La commande unalias supprime de façon définitive un alias. Son option -a (pour all) commande suppression de tous les alias.

Certains alias sont déclarés dans des fichiers excutés par bash lors de son démarrage, par exemple « ~/.bashrc ». En ce cas il faut commenter la ligne définissant l'alias dans le dit fichier pour le supprimer définitivement, sinon il ne le sera que durant la session en cours.

On peut automatiser de façon 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".