TP 2 (Bash) ============ Intro ------



Documents pareils
TP1 - Prise en main de l environnement Unix.

Aide-Mémoire unix. 9 février 2009

Outils pour la pratique

TP 1 Prise en main de l environnement Unix

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin


Premiers pas en Linux

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Module : Informatique Générale 1. Les commandes MS-DOS

Chapitre 4 : Édition de fichiers texte - Vi

Unix/Linux I. 1 ere année DUT. Université marne la vallée

C.M. 1 & 2 : Prise en main de Linux

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Shell Bash Niveau débutant

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

ECLIPSE ET PDT (Php development tools)

Introduction au Système d Exploitation Unix/Linux

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Bon ben voilà c est fait!

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

Sauvegarde sous MAC avec serveur Samba

Cyberclasse L'interface web pas à pas

TP 4 de familiarisation avec Unix

TP1. Outils Java Eléments de correction

Projet Administration Réseaux

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

TP1 : Initiation à l algorithmique (1 séance)

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

Séance 0 : Linux + Octave : le compromis idéal

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Introduction aux Systèmes et aux Réseaux

Q-Checker pour V6 Release 2.1

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Le générateur d'activités

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Programmation C. Apprendre à développer des programmes simples dans le langage C

1 Démarrage de Marionnet

Q-Checker pour V5 Release 5.1

Système clients serveur Kwartz Vulgarisation, identification, dossier personnel

Comment installer ocaml sous windows avec ocamlsdl?

La mémoire. Un ordinateur. L'octet. Le bit

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Le service FTP. M.BOUABID, Page 1 sur 5

Ce TP consiste à installer, configurer et tester un serveur DNS sous Linux. Serveur open source : bind9 Distribution : Mandriva

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Table des matières Hakim Benameurlaine 1

IBM SPSS Statistics Version 22. Instructions d'installation sous Windows (licence nominative)

Initiation à la programmation en Python

MEDIAplus elearning. version 6.6

Projet Semestre2-1SISR

SOMMAIRE. Travailler avec les requêtes... 3

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

Auguria_PCM Product & Combination Manager

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

SAUVEGARDER SES DONNEES PERSONNELLES

GESTION DES BONS DE COMMANDE

Linux LTE 2 - ISSBA. Année universitaire Linux Réseau et Archivage. Jean-Michel RICHER Faculté des Sciences, H206 1

I. Introduction aux fonctions : les fonctions standards

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

La Comptabilité UNIX System V Acctcom

Edutab. gestion centralisée de tablettes Android

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Projet : PcAnywhere et Le contrôle à distance.

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Administration du site (Back Office)

Les Boitiers de Vote Electroniques (Clickers)

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

Serveur d application WebDev

Manuel d'utilisation d'apimail V3

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»

Introduction à l informatique en BCPST

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

TRAVAUX DIRIGES D'INFORMATIQUE INITIATION A LA MANIPULATION DE WINDOWS 98

Retrospect 7.7 Addendum au Guide d'utilisation

1 Configuration réseau des PC de la salle TP

3IS - Système d'exploitation linux - Programmation système

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Installation de IBM SPSS Modeler Server Adapter

Onglet sécurité de Windows XP Pro et XP Home

TD/TP 1 Introduction au SDK d Android

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Installation et prise en main

Un serveur web, difficile?

Chapitre 10 : Logiciels

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Acronis Backup & Recovery 10 Server for Windows Acronis Backup & Recovery 10 Workstation. Guide de démarrage rapide

Contrôle de la DreamBox à travers un canal SSH

Transcription:

TP 2 (Bash) ============ Intro ------ Le but de cette séance est de vous familiariser avec l utilisation de l interpréteur de commande, ou shell, sous Unix. C est l équivalent de "l'invite de commandes MS-DOS" de Windows. Il permet d entrer des commandes en ligne et d automatiser certaines tâches grâce à un langage de programmation propre adapté aux manipulations de fichiers et de processus. Sous Unix, le shell offre beaucoup plus de possibilités que sous Windows et son utilisation est plus courante. Plus d'info : http://fr.wikipedia.org/wiki/bourne-again_shell Interpréteur de commandes -------------------------- Un interpréteur de commandes est un processus dont le rôle est de fournir une interface textuelle avec le système d'exploitation. Un interpréteur de commandes exécute en boucle la séquence d'actions suivante : - affichage de l'invite de commande (prompt) signalant qu'il est en attente d'une nouvelle commande de la part de l'utilisateur ; (c'est quand il y a d'affiché sur le terminal : user@pc:repertoire courant$ ) - aide à la saisie de la nouvelle commande, en fournissant à l'utilisateur des fonctions d'édition de texte en mode ligne : accès à l'historique des commandes précédentes, copie et remplacement rapides, complétion de noms de fichiers, etc. ; - analyse et vérification syntaxique de la commande tapée par l'utilisateur, et affichage d'un message d'erreur en cas de problème ; - si la commande est conforme, appel au système d'exploitation pour réaliser les opérations demandées : lancement d'un nouveau processus, etc. ; - attente de la fin de la commande en cours. Depuis les débuts des premiers Unix, de nombreux interpréteurs ont été créés, disposant de fonctionnalités de plus en plus puissantes. Parmi eux, citons : sh, csh, ksh, zsh, bash... Par défaut, vos environnements sont configurés pour utiliser bash. Configuration -------------- bash utilise des fichiers de configuration, qui se trouvent dans votre répertoire utilisateur. -.bash_login : les commandes de ce fichier sont exécutées lorsque vous vous connectez. -.bash_logout : les commandes de ce fichier sont exécutées lorsque vous vous déconnectez. -.bashrc : on y place les initialisations des sessions interactives (rattachées à un terminal). L ensemble de ces fichiers sont exécutés par le shell s ils se trouvent dans votre répertoire racine. Cela signifie que vous pouvez en modifier le contenu afin de personnaliser votre environnement de travail. Comme toutes les commandes unix, le shell bash dispose d une documentation en ligne accessible par la commande man. Edition des Commandes ----------------------

Dans une utilisation interactive du shell, c est-à-dire lorsque le shell interprète ligne à ligne les commandes soumises par l'utilisateur, il est important de pouvoir corriger, si cela est nécessaire, la ligne de commande avant de la soumettre, par des commandes similaires à celles d'un éditeur de texte. 2.1) Taper une commande sans appuyer entrer, puis testez ces combinaisons de touches : Control + a Control + e Control + u Control + k Control + l Vous pouvez maintenant supprimer entièrement la commande que vous venez de taper, en au plus deux combinaisons de touches. Une autre possibilité de bash, qui concerne encore une fois la construction d'une commande, permet la complétion du mot commencé grâce à la touche TAB. 2.2) Par exemple commencez à taper cd /net/cremie/votre_nom_de_compte mais ne finissez pas votre nom de compte et appuyez sur la touche TAB une fois, voir deux si rien ne se passe. Par la suite testez régulièrement la touche TAB, quand vous écrivez de commandes, pour comprendre comment elle marche. Quelle que soit la position du curseur sur la ligne de commande, la touche Entrée lance l'interprétation de la ligne par le shell. Variables et Substitution -------------------------- Le shell permet de définir des variables pour conserver certaines informations. Quelques variables au nom particulier sont utilisées par le système mais vous pouvez définir vos propres variables. 2.3) Exécutez la commande "env" pour afficher l'ensemble des variables définies dans l'environnement courant. Une variable est définie par la syntaxe NOM=VALEUR (sans espaces!). La valeur est considérée comme une chaîne de caractère même s'il s'agit d'une succession de chiffres. La valeur d'une variable est accessible par la syntaxe $NOM. Vous pouvez afficher cette valeur à l'écran en utilisant la commande echo. 2.4) Définissez une variable de nom UN et de valeur toto. Comparez les commandes : echo UN echo $UN 2.4,5) Afficher la valeur de la variable RANDOM. En fait, il existe deux types de variables : les variables d'environnement ou variables exportées, et celles qui ne le sont pas. La valeur d'une variable d'environnement est accessible par tous les processus issus du shell dans lequel la variable a été définie. En revanche, la valeur d'une variable non exportée est uniquement accessible dans le shell où elle a été définie. Les exercices suivants vont mettre en évidence ce comportement. Tout d'abord, notez que pour exporter une variable, il suffit d'exécuter la commande export suivie du nom de la variable à exporter. Par exemple, si vous créez la variable x contenant la valeur toto, x=toto vous pouvez l'exporter en écrivant export x

C'est deux opération peuvent être faites en une seule fois en utilisant la syntaxe suivante export x=toto 2.5) Définissez une seconde variable de nom DEUX et de même valeur que UN. Exportez la variable DEUX. Affichez les valeurs de UN et DEUX dans le shell courant. 2.5,5) Vérifiez si la variable UN et/ou la variable DEUX apparaissent avec la commande env. 2.6) Exécutez un nouveau shell en tapant la commande xterm. Affichez la valeur des deux variables. Que remarquez-vous? On peut annuler l'exportation d'une variable à l'aide de la commande export -n NOM 2.6,5) Annulez l'exportation de la variable DEUX et vérifiez à l'aide de env que la commande à bien fonctionnée. Evaluation et Substitution --------------------------- Il est important que vous vous familiarisiez avec les divers mécanismes d'évaluation du shell. Le caractère $ utilisé devant un nom de variable permet de substituer le nom par la valeur de la variable. Lors de l'évaluation d'une commande, une première opération de substitution a lieu avant l'exécution de la commande substituée. Plusieurs caractères permettent de contrôler la substitution : les parties d'une commande situées entre apostrophes ('') ne sont pas substituées ; les parties d'une commande situées entre guillemets ("") sont substituées normalement ; des crochets ({}) permettent de délimiter un nom de variable ; des parenthèses ($()) provoquent l'exécution d'une partie de la commande dans un sous-shell ; le caractère \ empêche la substitution. Remarque : On peut saisir sur la même ligne plusieurs commandes en utilisant le point virgule (;). Par exemple, la ligne suivante crée la variable y en lui affectant la valeur toto, puis l'affiche y=toto ; echo $y Quelques exemples pour vous aider à comprendre : (Si besoin, taper man pwd pour vous rappeler ce que fait cette commande.) echo $HOME --> /net/cremi/auesnard echo \$HOME --> $HOME echo '$HOME' --> $HOME x=pwd ; echo $x --> pwd x=$(pwd) ; echo $x --> /net/cremi/auesnard x=toto tutu ; echo $x --> Erreur, il utiliser les "..." x="toto tutu" ; echo $x --> toto tutu 2.7) Dans les expressions shell ci-dessus, indiquez le résultat de l'évaluation du shell et le résultat final. Vous chercherez les solutions de ces exercices à la main, et vous vérifierez vos solutions en les tapant dans le shell. x=p ; y=$xwd ; $y x=p ; ${x}'wd' x=p ; "${x}'wd'" x=p ; y=${x}wd ; $y x=p ; y='${x}"wd"'; $y x=p ; "${x}wd"

x=p ; y=$(${x}wd); echo $y 2.8) Créez une variable salutation dont le contenu est "bonjour nom", où nom représente votre nom d'utilisateur. Les guillemets doivent apparaître quand on fait echo $salutation. 2.9) Certaines variables sont utilisées par le shell. Affichez le contenu des variables HOME et PATH. Quelques Commandes du Shell ---------------------------- Le shell dispose d'un ensemble très complet de commandes pour la manipulation des fichiers et des processus. Certaines commandes sont internes aux shell. Par exemple, les commandes cd, echo et pwd que vous avez utilisées sont des commandes internes. D'autres commandes sont des programmes exécutables accessibles depuis le shell. Nous allons d'abord explorer les principales commandes internes. 2.10) On peut trouver la liste des commandes internes au shell (ou builtin commands), en tapant info coreutils. Pour apprendre à se déplacer dans cette documentation taper H une fois que vous y êtes. 2.11) Que signifie la commande cd -? 2.12) La commande exit permet de quitter le shell. Essayez. 2.14) La commande printf peut remplacer echo. Quelles différences trouvez-vous entre entre les deux commandes? 2.14bis) Utilisez la commande read pour affecter une valeur saisie au clavier à une variable x. 2.15) Testez la commande history. Rappelez une commande quelconque de l'historique. La commande!numéro relance la commande de numéro donné dans l'historique. 2.15,5) La commande!! permet de relancer la commande précédente. En tapant quelle commande peut-on lancer l'avant dernière commande. 2.16) La commande "unset" permet de supprimer une variable. Testez là en créant et en supprimant des variables. 2.16,5) Faites unset sur la variable PATH de votre environnement. Essayez maintenant de lancer la commande ls. Que remarquez-vous? Lancez maintenant /bin/ls. Pour que les commandes marchent à nouveau quittez et relancez un nouveau terminal. 2.16,7) Cherchez sur internet à quoi sert la variable PATH pour comprendre ce qu'il vient de se passer. 2.17) Utilisez la commande which. Testez avec les paramètres ls et cd. S'il n'y a pas de réponse, c'est qu'il s'agit d'une commande interne. Alias ------ Il est possible de définir des alias sous Unix permettant de personnaliser vos appels de commandes les plus utilisées. Les commandes à utiliser ici sont alias et unalias. Par exemple si vous faites la commande ll, normalement vous avez une erreur. Maintenant, tapez alias ll='ls -l' Tapez de nouveau ll. En utilisant les commandes alias et unalias, répondez aux questions suivantes : 2.18) Affichez la liste des alias définis dans le shell courant.

2.19) Testez la commande date. Puis, définissez un alias date sur la commande ls et exécutez la commande date. 2.20) La commande date originale n'est plus disponible. Trouvez un moyen de l'appeler. 2.21) Détruisez cet alias. Commandes Externes Classiques ------------------------------ Les commandes externes sont des programmes exécutables qui peuvent être disponibles ou pas suivant l'installation du système que vous utilisez. Certains programmes sont néanmoins tellement utilisés qu'ils sont devenus indissociables du système. Les programmes ls, cp et mv sont des exemples de commandes externes classiques. Nous allons découvrir d'autres commandes très pratiques. 2.22) Testez les commandes suivantes : date, whoami, who, w, id, hostname, uname -a, df, uptime, free. A quoi servent-elles? 2.23) Les commandes cat, more, less, tail, head sont utilisées pour visualiser le contenu d'un fichier texte. Essayez ces commandes avec pour paramètre /proc/cpuinfo et /proc/meminfo. Quel infos contiennent ces fichiers? (on pourra utiliser q pour quitter more et less.) 2.24) Etudiez les options de ces commandes. Affichez les cinq premières lignes et les cinq dernières lignes de ~/.bashrc. 2.25) La commande "expr" permet d'interpréter les variables comme des valeurs numériques et de réaliser des calculs simples. Par exemple, testez i=99 ; j=$(expr $i + 1) ; echo "i=$i j=$j" Il est également possible de réaliser des tests logiques entre la valeur de deux variables. Utilisez expr pour déterminer si i < j. 2.26) La commande grep permet d'isoler une ligne contenant une expression particulière. Essayez la commande : grep "udp" /etc/services 2.26) Créez le fichier suivant avec la commande cat (cf. TP1). d b a c b d Testez la commande sort. 2.26,14) Créer un fichier adapté puis testez la commande uniq. 2.27) La commande "find" permet de rechercher un fichier à partir d'un point de l'arborescence. Ainsi : find $HOME -name "*.txt" permet de retrouver tous les fichier nommés "*.txt" à partir du répertoire $HOME et dans ses sous-répertoires. Ecrivez une commande pour déterminer l'emplacement des fichiers débutants par le préfixe "tty" dans le dossier /dev. Archivage ---------- Les utilitaires tar et gzip sont très utilisés pour archiver et comprimer des fichiers.

Ainsi, la commande : tar cvf ~/tmp.tar /tmp permet de réunir tous les fichiers et les sous-répertoires contenus dans /tmp dans le fichier ~/tmp.tar. Ce fichier peut alors être comprimé pour un envoi d'email : gzip ~/tmp.tar On obtient alors le fichier comprimé ~/tmp.tar.gz qui remplace le fichier original. Inversement, la commande : gunzip ~/tmp.tar.gz permet de décomprésser le fichier et la commande : tar xvf ~/tmp.tar développe le contenu de l'archive. L'option z de la commande tar permet de (dé)compresser tout en (dé)archivant. tar cvzf ~/tmp.tar.gz /tmp tar xvzf ~/tmp.tar.gz 2.28) Créez un répertoire archive dans lequel vous copierez (~/.bashrc, /etc/passwd, /etc/bash*,...). Archivez puis désarchivez votre répertoire. -- Patxi Laborde Zubieta (patxi.laborde-zubieta@labri.fr) Ce document est une version modifiée d'un document fait par Aurélien Esnard (aurelien.esnard@labri.fr)