Page dédiée à l'atelier de Léo Testard du 15 Octobre 2010
  • Merci encore Léo : ton atelier sur le shell (les shells Unix) était vraiment très intéressant

Introduction

Un Shell est une interface en mode texte, qui permet d'appeler un programme.
Il y a deux types d'interfaces :
  • en mode graphique (ou « clickodromes ») « faussement pratiques », du style de Windows, KDE, GNOMEetc.
  • en mode texte comme le shell bash

Les interfaces en mode graphique sont limitées (dans leur possibilités) comme l'illustre cette commande du shell (assez complexe) qui permet de trouver et d'effacer dans le répertoire courant tous les fichiers jpg dont la taille est supérieure à 10 Mo:
  • find -name '*.jpg' -size +10M -delete

Il existe plusieurs shells : bash, dash, ksh , csh ...
  • bash est l'abréviation de Bourne Again SHell
  • dash est l'abreviation de Debian Almquist SHell
  • ksh est l'abreviation de Korn SHell
  • csh est l'abreviation de C SHell

IMPORTANCE de la casse : Les commandes (ou instructions) sont (sauf cas particuliers) écrites en minuscules ; attention a bien respecter la casse.

ASTUCE pour passer du mode graphique au mode texte :
  • CTRL ALT F1, CTRL ALT F2, CTRL ALT F3, CTRL ALT F4, CTRL ALT F5, CTRL ALT F6 ;
  • CTRL ALT F7 pour revenir à l'environnement graphique

Des rappels utiles
  • L'arborescence d'un système GNU/Linux
  • Chemins absolus ou relatifs dans l'arborescence d'un système
  • . signifie le repertoire courant alors que .. signifie le répertoire parent ( la commande cd .. )
  • quelques prècisions sur cette arborescence :
    • le répertoire bin contient les commandes binaires executables par tous les utilisateurs (grep, mount, cp, etc)
    • le repertoire sbin contient les commandes executables uniquement par root (le super-utilisateur du système)
    • le répertoire etc contient (presque tous) les fichiers de configuration du système
    • le repertoire var contient entre autres tous les "logs" ( comme /var/log/messages )
    • usr est l'abréviation de "unix system resources"

Une astuce pour retrouver les commandes du shell ( déjà utilisées )
  • appuyer sur la touche du curseur flêche vers le haut ( autant de fois que necessaire )

Les commandes du shell (quelques exemples)
  • man le_nom_de_la_commande ( appuyer sur q pour sortir du texte explicatif)
  • man pwd (affiche le manuel de la commande pwd)
  • man bash ( affiche le manuel du shell bash )
  • pwd (affiche le nom du répertoire courant)
  • whereis ls ( pour voir où se trouve la commande ls )
  • ls (liste les fichiers et les sous-répertoires du répertoire courant)
  • ls -a (affiche aussi les fichiers masqués)
  • ls -l ( version donnant plus détails que la commande ls sans argument )
  • ls -l -h ( comme la commande précédente mais le format de la taille des fichiers est "human readable" )
  • ls -lh ( identique à la commande précedente)
  • ls -ld /usr/bin ( ne liste que l'entrée du repetoire /usr/bin et non son contenu )
  • mkdir test (créer un sous répertoire dont le nom est test )
  • cd test ( la commande pour se deplacer dans le sous-répertoire test)
  • touch antibes ( une commande de création du fichier antibes)
  • file antibes (affiche le type du fichier antibes)
  • cp antibes antibes-2 ( une commande pour copier le fichier antibes sous le nom antibes-2 )
  • rm antibes-2 ( cette commande supprIme le fichier antibes-2 )
  • find -name "antibes" (recherche le fichier antibes en partant du répertoire courant)
  • find / -name "antibes" (recherche le fichier antibes en partant du répertoire racine /)
  • locate antibes (cette commande utilise une base de données qui est mise à jour par: sudo updatedb )
  • head -n3 toto (affiche les 3 premières lignes du fichier toto )
  • tail -n3 toto (affiche les 3 dernières lignes du fichier toto )
    • Les commandes suivantes ne sont executables que par le superutilisateur (le root du système) :
  • mount -t vfat /dev/sdb1 /mnt/cle (commande de montage d'une clé USB)
  • dd if=/dev/zero of=/dev/<partition cible> (pour remplacer tous les octets d'une partition par le caractère null (ASCII NUL, 0x00)

Les redirections et les tubes (pipes en anglais)
  • echo coucou > dmesg
  • cat dmesg.txt
  • echo coucou >> dmesg
  • cat dmesg
  • file dmesg
  • ls -l | more
  • ls -l | less
  • ls -a | grep .bashrc

Questions et Réponses

  1. vers quoi pointe le lien /bin/sh ?
    • lancez donc la commande : ls -l /bin/sh
  2. quel est le shell de votre machine ?
    • lancez donc la commande : echo $SHELL (merci Vincent)
  3. où se trouve le fichier de configuration du shell pour l'utilisateur leo ?
    • /home/leo/.bashrc
  4. comment obtenir le même paramétrage de shell que leo ?
  5. comment disposer des pages man en français
    • sudo aptitude install manpages-fr
  6. comment installer (si besoin) l'editeur vim sur sa machine ?
    • sudo aptitude install vim
  7. Quels sont les éditeurs en mode texte ( mode non graphique donc )?
    • vim nano emacs (les trois plus connus)
  8. Qu'est ce qu'un script bash ?

Quelques Liens