programmation unix 1 – cours n - lsis. · pdf fileexamen final : droit aux notes de...

Click here to load reader

Post on 10-Sep-2018

217 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Programmation Unix 1 cours n1

    Edouard THIEL

    Faculte des Sciences

    Universite dAix-Marseille (AMU)

    Septembre 2014

    Les transparents de ce cours sont telechargeables ici :http://pageperso.lif.univ-mrs.fr/~edouard.thiel/ens/unix/

    Lien court : http://j.mp/progunix

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 1/35

    http://pageperso.lif.univ-mrs.fr/~edouard.thiel/http://pageperso.lif.univ-mrs.fr/~edouard.thiel/ens/unix/http://j.mp/progunixhttp://creativecommons.org/licenses/by-nc/3.0/fr/

  • Presentation de lUE

    5 seances C/TD/TP

    Pas de controle continu

    Examen final : droit aux notes de CM/TD/TP

    Contenu : Langage de script bash Utilisation, organisation systeme Unix

    Objectifs : Matriser bash

    Sur la page web du cours : transparents, annales corrigees,liens, etc.

    Prise de notes : noter ce qui semble important, renvoyer aunumero de transparent quand beaucoup dinformations.

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 2/35

    http://pageperso.lif.univ-mrs.fr/~edouard.thiel/ens/unix/http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Plan du cours n1

    1. Systeme dexploitation

    2. Le shell

    3. Commandes Unix

    4. Redirections et tubes

    5. Les scripts

    6. Elements du langage bash

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 3/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • 1 - Systeme dexploitation

    Un systeme dexploitation est un ensemble de logiciels qui

    prend le controle de la machine apres le boot ;

    partage et gere les ressources de la machine pour les autreslogiciels : processeur, memoire, disque, reseau, ecran, etc ;

    rend transparent les entrees-sorties pour les autres logiciels.

    Unix designe une famille de SE. Quelques proprietes :

    Multi-utilisateur, phase didentification, droits.

    Manipulation du systeme via un interpreteur de commande :un shell.

    Unite elementaire de gestion des ressources = le fichier.

    Unite elementaire de gestion des traitements = le processus.

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 4/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Historique Unix

    1964 Projet Multics de S.E. multi-tache (MIT, General Electric,Bell Labs dAT&T)

    1969 Ken Thompson et Denis Ritchie (Bell Labs) ecrivent 1 S.E.multi-tache sur un ordi. de recuperation (DEC PDP 7 de 1964)

    Brian Kernigham (Bell Labs) lappelle Unix par opposition aMultics ; Multics abandonne

    1970-71 V1 : Reecriture sur PDP11 (16 bits, 24K Ram, 512K DD)

    Ken Thomson cree langage B (inspire de BCPL) ; reecrit Unix

    1972-73 Denis Ritchie cree langage C (inspire de B)

    V2 : Ken Thomson reecrit entierement Unix en C

    Les sources sont fournis a : Bell ; AT& T ; Univ. Californie aBerkeley 3 branches principales de developpement.

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 5/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Branches principales de developpement Unix

    Bell

    AT&T

    BSD

    73

    V3

    77

    1.0

    81

    SysIII

    88

    SysVR4

    89

    V10

    90

    OSF1 : Dec, HP, IBM

    AT&T, Sun, HP, SGI

    stop.

    00

    MacOSX4.4

    Historique complet et documents : www.levenez.com

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 6/35

    http://www.levenez.comhttp://creativecommons.org/licenses/by-nc/3.0/fr/

  • Normalisation

    POSIX (IEEE, depuis 1988)

    3 normes, 17 documents

    API ; commandes et utilitaires Unix ; tests de conformite

    documents et certifications couteux

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 7/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Logiciels libres

    Systemes proprietaires, et souvent tres chers

    Emergence Logiciels Libres : Richard Stallman

    FSF (Free Software Foundation),

    Projet GNU (Gnu is Not Unix) = reecrire Unix

    Licences GPL, CC, etc

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 8/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • GNU/Linux

    Linux : Linus Torvalds

    Etudiant Finlandais, etudie systeme MINIX (auteur: Tanenbaum)ecrit 1 noyau pour projet Master 1, puis appel a contribution surinternet.

    0.01

    94

    1.0

    96

    2.0

    01

    2.4

    03

    2.6 3.0

    99

    2.2

    07

    2.6.20

    20111991

    Distributions = noyau Linux + utilitaires GNU + logiciels libres +documentation + installeur + utilitaires :

    Ubuntu, Debian, Redhat, Fedora, Suse, Slackware, etc

    94% Top 500 supercalculateurs, serveurs, Android, liseuses,box internet, TV, voitures, etc

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 9/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • 2 - Le shell

    Linterpreteur de commande est tres important sous Unix.Il permet de manipuler des fichiers et des processus avec descommandes.

    Lit une commande au clavier

    Interprete la commande

    Lit une ligne dans le script

    Execute la commande

    Mode script (fichier de commandes) :

    Interprete la commande

    Execute la commande

    Mode interactif : dans un terminal

    Affiche un prompt $

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 10/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Shells Unix et langages de script

    Le Bourne-shell : langage sh cree par Steeve Bourne en 1977, le plus ancien, le shell par defaut syntaxe puissante mais rugueuse

    Le C-shell : langage csh syntaxe se rapprochant du C pas de fonctions ; moins expressif Document pourquoi preferer sh a csh

    Le Korn-shell : langage ksh sur-ensemble de sh, plus recent

    etc

    Clones libres : csh tcsh : turbo-csh sh bash : Bourne-again shell

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 11/35

    http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Bash

    1988 Brian Fox, pour le projet GNU

    devenu le shell de reference, le plus utilise (Unix libres,proprietaires, MacOSX, Cygwin).

    sur-ensemble de sh, incluant des possibilites de ksh et csh

    Langage bash : puissant et expressif

    interprete, base sur les substitutions

    fonctions, recursivite

    types simples : chanes, entiers, tableaux

    controle de flux : redirections, tubes

    execution sequentielle ou parallele

    permet daugmenter le systeme.

    Langage oriente commandes : la syntaxe privilegie la gestion descommandes sur les autres aspects.

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 12/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • 3 - Commandes Unix

    Certaines commandes sont integrees a bash : les builtins

    echo "message" affiche le message a lecran

    read toto lit une ligne au clavier, puis lamemorise dans la variable toto

    Exemple :

    $ echo "Quel est votre nom ?"

    Quel est votre nom ?

    $ read nom

    Thiel

    $ echo "Votre nom est $nom"

    Votre nom est Thiel

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 13/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Commandes Unix de base (1)

    La plupart des commandes sont des programmes externes : aumoins 800 (dans /bin, /usr/bin, etc)

    cat fichier affiche le fichiermore fichier idem + pause apres chaque ecran

    ls liste le repertoire courantls rep liste le repertoire rep

    cd rep change le repertoire courantcd .. va dans le repertoire parentpwd affiche le repertoire courant

    mkdir rep1 cree le sous-repertoire rep1rmdir rep1 detruit le sous-repertoire rep1 si vide

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 14/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Commandes Unix de base (2)

    cp f1 f2 copie fichier f1 en fichier f2cp f1 f2 ...fn rep copie les fichiers dans rep

    mv f1 f2 renomme fichier f1 en fichier f2mv f1 f2 ...fn rep deplace les fichiers dans rep

    rm f1 ...fn detruit les fichiers

    vi f1 ouvre f1 avec editeur vi

    touch f1 change date de modification de f1ou cree un fichier vide

    chmod droits f1 ...fn change les droits des fichierschown propri f1 ...fn change le proprietaire des fichierschgrp groupe f1 ...fn change le groupe des fichiers

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 15/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Documentation

    La plupart des commandes sont documentees.

    Pour les commandes builtin : helphelp echo

    Pour les commandes externes : man ou infoman ls

    info gcc

    Les commandes daide sont elles-memes auto-documentees :help help

    man man

    info info

    [email protected] Programmation Unix 1 cours n1 CC BY-NC 16/35

    http://creativecommons.org/licenses/by-nc/3.0/fr/

  • Arguments

    La plupart des commandes ont des arguments :

    ls -l -a rep affiche infos sur chaque fichier de rep

    cp -f f1 f2 force copie si f2 existe deja

    Dans certaines commandes les options peuvent etre regroupees :ls -la rep

    Dans certaines commandes les options existent au format longou court :

    ls --recursive --all

    ls -R -a

    ls -Ra

    Dans la documentation : indication des options entre [ ]ls [option] ... [file] ...

    cp [option] ... source ... directory

    [email protected] Progr