| Shell : Environnement d'utilisation en ligne de commandes. Exemples : 
        - sh (Bourne shell)
 
        - bash (Bourne again shell)
 
        - csh (C shell)
 
        - ksh (Korn shell)
 
        - ...
 
       
        Beaucoup de caractéristiques communes. 
        bash: Shell usuellement configuré par défaut avec Linux. 
        Existence d'un fichier de configuration pour chaque shell, commun à tous les utilisateurs, généralement sous /etc,
          modifiable par l'administrateur système et utilisé chaque fois qu'un shell est lancé. 
        Existence possible d'un fichier de configuration, pour chaque shell, pour chaque utilisateur, stocké sous la racine du
          répertoire de base de l'utilisateur, modifiable par lui et utilisé après le fichier de configuration commun. 
        Différents noms pour ces fichiers pour les différents shells et les différentes distributions. 
        Variable d'environnement 
        Variable gérée au sein d'un shell. Caractérisée par un nom et une valeur. 
          - set : Commande d'affichage de la liste des variables d'environnement et de leurs valeurs.
 
         
          
            
              
                
                  BASH=/bin/bash 
                    BASH_ARGC=() 
                    BASH_ARGV=() 
                    BASH_COMPLETION=/etc/bash_completion 
                    BASH_COMPLETION_DIR=/etc/bash_completion.d 
                    BASH_LINENO=() 
                    BASH_SOURCE=() 
                    BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" 
                    [5]="i486-pc-linux-gnu") 
                    BASH_VERSION='3.1.17(1)-release' 
                    COLORTERM= 
                    COLUMNS=112 
                    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Sg21DwlViV 
                    ,guid=2e97ed4427821775e98ecac831163200 
                    DESKTOP_SESSION=default 
                    DIRSTACK=() 
                    DISPLAY=:0.0 
                    DM_CONTROL=/var/run/xdmctl 
                    EUID=1000 
                    GROUPS=() 
                    GS_LIB=/home/nico/.fonts 
                    GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/nico/.gtkrc-2.0: 
                    /home/nico/.kde/share/config/gtkrc-2.0 
                    GTK_RC_FILES=/etc/gtk/gtkrc:/home/nico/.gtkrc: 
                    /home/nico/.kde/share/config/gtkrc 
                    HISTCONTROL=ignoredups 
                    HISTFILE=/home/nico/.bash_history 
                    HISTFILESIZE=500 
                    HISTSIZE=500 
                    HOME=/home/nico 
                    HOSTNAME=agamemnon 
                    HOSTTYPE=i486 
                    IFS=$' \t\n' 
                    KDE_FULL_SESSION=true 
                    KDE_MULTIHEAD=false 
                    KONSOLE_DCOP='DCOPRef(konsole-7429,konsole)' 
                    KONSOLE_DCOP_SESSION='DCOPRef(konsole-7429,session-1)' 
                    LANG=fr_FR.UTF-8 
                    LANGUAGE=fr_FR:fr:en_GB:en 
                    LESSCLOSE='/usr/bin/lesspipe %s %s' 
                    LESSOPEN='| /usr/bin/lesspipe %s' 
                    LINES=33 
                    LOGNAME=nico 
                    LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01; 
                    35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30; 
                    42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01; 
                    31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01; 
                    31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01; 
                    31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01; 
                    35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01; 
                    35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01; 
                    35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01; 
                    35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01; 
                    35:*.ogg=01;35:*.wav=01;35:' 
                    MACHTYPE=i486-pc-linux-gnu 
                    MAILCHECK=60 
                    OPTERR=1 
                    OPTIND=1 
                    OSTYPE=linux-gnu 
                    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: 
                    /bin:/usr/bin/X11:/usr/games 
                    PIPESTATUS=([0]="0") 
                    PPID=7429 
                    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"' 
                    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 
                    PS2='> ' 
                    PS4='+ ' 
                    PWD=/home/nico 
                    SESSION_MANAGER=local/agamemnon:/tmp/.ICE-unix/7371 
                    SHELL=/bin/bash 
                    SHELLOPTS=braceexpand:emacs:hashall:histexpand:interactive-comments:monitor 
                    SHLVL=2 
                    SSH_AGENT_PID=7314 
                    SSH_AUTH_SOCK=/tmp/ssh-vZUzct7278/agent.7278 
                    TERM=xterm 
                    UID=1000 
                    USER=nico 
                    WINDOWID=41943047 
                    XCURSOR_THEME=kubuntu 
                    XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,rsvd,method=classic 
                      _=set 
                      i=/etc/profile.d/which-2.sh 
                    langfile=/root/.i18n | 
                 
                
                  | 
                     
                    Exemple de résultat d'exécution de la commande set  | 
                 
               
            
           
          Désignation de la valeur d'une variable par utilisation de son nom précédé d'un $. 
        
            
        echo HOSTNAME -> HOSTNAME, le nom de la variable 
          echo $HOSTNAME -> agamemnon, la valeur de la variable 
        Configuration d'une variable en tapant son nom suivi d'un égal suivi de la valeur (sans espace). 
        
            
        Quelques variables caractéristiques 
          - HOME : Répertoire de base d'un utilisateur (dynamique)
 
          - LOGNAME : Login de l'utilisateur en session (dynamique)
 
          - PATH : Ensemble des chemins de recherche des applications lancées (séparés par des :)
 
          - PS1 : Prompt
 
          - PWD : Répertoire courant (dynamique)
 
          - SHELL : Nom du shell courant (dynamique)
 
         
          ~ : Répertoire de base d'un utilisateur (dynamique) 
        Caractères joker 
        Utilisation possible de caractères "joker" dans les lignes de commandes pour désigner plusieurs fichiers en une
          seule commande. 
            - * : Toute suite de caractères
 
            - ? : Un seul caractère quel qu'il soit
 
           
          Pipes 
        Le caractère | entre deux commandes permet d'exécuter la première commande en envoyant son résultat d'exécution en tant
          que paramètres d'entrée de la seconde. 
        
            
        ls | sort 
          Liste des fichiers du répertoire courant envoyée 
          à la commande sort pour tri par ordre alphabétique puis affichage 
        Redirection des sorties et des entrées 
        Renvoi des résultats en sortie vers un fichier avec écrasement de celui-ci au moyen du caractère > placé entre la commande
          et le nom de fichier. 
        Renvoi des résultats en sortie en ajout à la fin d'un fichier au moyen des caractères >> placés entre la commande
          et le nom de fichier. 
        Obtention des données demandées au clavier par la commande depuis le contenu d'un fichier au moyen du caractère < placé
          entre la commande et le nom de fichier. 
        
            
        Sauvegarde des résultats de la commande date dans le fichier Sortie.txt 
          Ajout à la fin du fichier Sortie.txt des résultats de la commande who 
        
            
        Visualisation du contenu du fichier Sortie.txt 
        Exécution des commandes en arrière plan 
        Exécution d'une application en arrière plan en ajoutant un & à la fin de la ligne de commande de lancement. 
        
            
        Lancement en arrière plan de l'éditeur de textes "kwrite" 
          Ligne de commande encore utilisable 
        
            
        kwrite 
        
            
        Lancement classique 
          Ligne de commande bloquée sur l'application jusqu'à sa terminaison 
        
          - nohup : Commande permettant de lancer une application en arrière plan de manière à la rendre insensible aux déconnexions
            de session.
 
         
        Interruption d'un shell 
        exit : Interruption du shell en exécution. 
        Scripts shell 
        Script shell : Fichier de commandes en langage shell (fichier texte rendu exécutable par exécution de la command 
          chmod +x script_shell). 
        
          Syntaxe 
         
        
          - # pour placer une ligne en commentaire.
 
          - Affectation d'une variable : var=valeur ou var="valeur" si la valeur comporte des espaces.
 
          - read pour lire une variable au clavier.
 
          - echo pour afficher une variable.
 
          - Récupération des items de la ligne de commande via les codes $0, $1, $2, $3, ... dans l'ordre de frappe et incluant le
            nom du shell.
 
            Récupération de la liste complète des items avec $*. 
            Récupération du nombre d'items avec $#. 
            Récupération du PID du shell avec $$. 
         
        
            
        Exemple de script de commande : ScriptParametres 
        
            
        Résultat à l'exécution 
        
          - Récupération du résultat d'exécution de la dernière commande via le code $?.
 
            0 indique "Pas d'erreur d'exécution, sortie normale". 
         
        
            
        Pas d'erreur d'exécution 
        
            
        Erreur d'exécution 
        
          - Existence des classiques instructions de structuration if, case, for et while.
 
         
        
          
            
              
                if commande 
                    then 
                    ... 
                    else 
                    .. 
                    fi | 
               
              
                | 
                   
                 Exemple | 
               
             
          
         
        
        
          
            
              
                case variable in 
                    v1|v2|...|vn) 
                      ...;; 
                    w1|w2|...|wn) 
                      ...;; 
                    esac | 
               
              
                | 
                   
                 Exemple | 
               
             
          
         
        
        
          
            
              
                for variable in liste 
                    do 
                    ... 
                    done | 
               
              
                | 
                   
                 Exemple | 
               
             
          
         
        
        
        
          - test : Evaluation d'une expression.
            - Opérateurs sur les fichiers :
              - -d E : E répertoire
 
              - -e E : E existe
 
              - -r E : E lisible
 
              - -s E : E de taille non nulle
 
              - -w E : E peut être écrit
 
              - -x E : E exécutable
 
              - ...
 
             
             
            - Opérateurs de comparaison entre deux expressions de type chaine de caractères :
              - E : E non chaine vide
 
              - E1 == E2 : E1 égal à E2
 
              - E1 != E2 : E1 différent de E2
 
             
             
            - Opérateurs de comparaison sur expressions numériques :
              - E1 -eq E2 : E1 égal à E2
 
              - E1 -ne E2 : E1 différent de E2
 
              - E1 -ge E2 : E1 plus grand ou égal à E2
 
              - E1 -gt E2 : E1 strictement plus grand que E2
 
              - E1 -le E2 : E1 plus petit ou égal à E2
 
              - E1 -lt E2 : E1 strictement plus petit que E2
 
             
             
            - Opérateurs booléens :
              - (E) : E est vrai
 
              - !E : E est faux
 
              - E1 -a E2 : E1 et E2
 
              - E1 -o E2 : E1 ou E2
 
             
             
           
           
         
        
            
        Test d'égalité et test de différence 
          entre variable et constante numérique 
        
            
        Tests d'existence de fichiers 
        
            
        Tests de lisibilité de fichiers 
        
            
        Tests d'accès en écriture de fichiers 
        RETOUR
        |