Archive pour février 2012
|
Formation en Ligne « Linux – Les Bases » Gratuite Cet article est issu de la leçon Le Shell Bash de la formation en ligne LX01 – Linux – Les Bases du site www.linuxelearning.com. La formation en ligne LX01 – Linux – Les Bases couvre les distributions CentOS/Redhat, Debian et openSUSE et contient 5 leçons :
Pour plus d’informations cliquez-ici.
|
Un shell est un interpréteur de commandes ou en anglais un Command Line Interpreter (C.L.I). Il est utilisé comme interface pour donner des instructions ou commandes au système d’exploitation.
Le mot shell est générique. Il existe de nombreux shells dans le monde Unix, par exemple :
| Shell | Nom | Date de Sortie | Inventeur | Commande | Commentaires |
|---|---|---|---|---|---|
| tsh | Thompson Shell | 1971 | Ken Thompson | sh | Le premier shell |
| sh | Bourne Shell | 1977 | Stephen Bourne | sh | Le shell commun à tous les Unix. Sous Linux : /bin/sh |
| csh | C-Shell | 1978 | Bill Joy | csh | Le shell BSD. Sous Linux : /bin/csh |
| tcsh | Tenex C-Shell | 1979 | Ken Greer | tcsh | Un dérivé du shell csh. Sous Linux : /bin/tcsh |
| ksh | Korn Shell | 1980 | David Korn | ksh | Uniquement libre depuis 2005. Sous Linux : /bin/ksh |
| bash | Bourne Again Shell | 1987 | Brian Fox | bash | Le shell par défaut de Linux et de MacOS X. Sous Linux : /bin/bash |
Cette unité concerne l’utilisation du shell bash sous Linux.
Le shell/bin/bash permet de:
-
Rappeler des commandes
-
Générer la fin de noms de fichiers
-
Utiliser des alias
-
Utiliser les variables tableaux
-
Utiliser les variables numériques et l’arithmétique du langage C
-
Gérer des chaînes de caractères
-
Utiliser les fonctions
Une commande commence toujours par un mot clef. Ce mot clef est interpréter par le shell selon le type de commande et dans l’ordre qui suit :
-
Les alias
-
Les fonctions
-
Les commandes internes au shell
-
Les commandes externes au shell
Les Commandes Internes et Externes au shell
Les commandes internes au shell sont des commandes telles cd. Pour vérifier le type de commande, il faut utiliser la commande type:
[root@centos ~]# type cd cd est une primitive du shell
Les commandes externes au shell sont des binaires exécutables ou des scripts, généralement situés dans /bin, /sbin, /usr/bin ou /usr/sbin :
[root@centos ~]# type ifconfig ifconfig est /sbin/ifconfig
Les alias
Les alias sont des noms permettant de désigner une commande ou une suite de commandes et ne sont spécifiques qu’au shell qui les a créés ainsi qu’à l’environnement de l’utilisateur :
[root@centos ~]# exit logout [trainee@centos ~]$ type ls ls est un alias vers « ls --color=auto »
Un alias se définit en utilisant la commande alias:
[trainee@centos ~]$ alias dir='ls -l' [trainee@centos ~]$ dir total 64 -rw-rw-r-- 1 trainee trainee 0 22 oct. 10:24 aac -rw-rw-r-- 1 trainee trainee 0 22 oct. 10:24 abc -rw-rw-r-- 1 trainee trainee 0 22 oct. 10:24 bca drwxrwxr-x 2 trainee trainee 4096 1 déc. 14:01 bin drwxr-xr-x 2 trainee trainee 4096 3 août 14:14 Bureau drwxr-xr-x 2 trainee trainee 4096 28 juil. 14:45 Documents drwxr-xr-x 2 trainee trainee 4096 22 oct. 07:26 Images drwxr-xr-x 2 trainee trainee 4096 28 juil. 14:45 Modèles drwxr-xr-x 2 trainee trainee 4096 28 juil. 14:45 Musique drwxr-xr-x 2 trainee trainee 4096 28 juil. 14:45 Public drwxr-xr-x 2 trainee trainee 4096 14 nov. 15:56 Téléchargements drwxr-xr-x 2 trainee trainee 4096 28 juil. 14:45 Vidéos -rw-rw-r-- 1 trainee trainee 0 22 oct. 10:24 xyz
La liste des alias définis peut être visualisée en utilisant la commandealias:
[trainee@centos ~]$ alias alias dir='ls -l' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
Pour forcer l’exécution d’une commande et non l’alias il faut faire précéder la commande par le caractère:
[trainee@centos ~]$ dir aac bca Documents Modèles Public Vidéos abc Bureau Images Musique Téléchargements xyz
Pour supprimer un alias, il convient d’utiliser la commande unalias:
[trainee@centos ~]$ unalias dir [trainee@centos ~]$ dir aac bca Documents Modèles Public Vidéos abc Bureau Images Musique Téléchargements xyz
Le shell des utilisateurs est défini par root dans le dernier champs du fichier/etc/passwd:
[trainee@centos ~]$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin abrt:x:498:498::/etc/abrt:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin nslcd:x:65:55:LDAP Client User:/:/sbin/nologin saslauth:x:497:495:"Saslauthd user":/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin trainee:x:500:500:trainee:/home/trainee:/bin/bash vboxadd:x:495:1::/var/run/vboxadd:/bin/false prison:x:501:502:chroot_user:/home/prison:/bin/chroot
Cependant l’utilisateur peut changer son shell grâce à la commandechsh. Les shells disponibles aux utilisateurs du système sont inscrits dans le fichier /etc/shells. Saisissez la commande cat /etc/shells:
[trainee@centos ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh
Ensuite utilisez la commande echo pour afficher le shell actuel de trainee:
[trainee@centos ~]$ echo $SHELL /bin/bash
Changez ensuite le shell de trainee en utilisant la commande chshen indiquant la valeur de /bin/sh pour le nouveau shell :
[trainee@centos ~]$ chsh Modification du shell pour trainee. Mot de passe : trainee Nouveau shell [/bin/bash]: /bin/sh Shell a changé.
Vérifiez ensuite le shell actif pour trainee:
[trainee@centos ~]$ echo $SHELL /bin/bash
Dernièrement contrôlez le shell stipulé dans le fichier /etc/passwd pour trainee:
[trainee@centos ~]$ cat /etc/passwd | grep trainee trainee:x:500:500:trainee:/home/trainee:/bin/sh
Modifiez votre shell à /bin/bash de nouveau en utilisant la commande chsh :
[trainee@centos ~]$ chsh Modification du shell pour trainee. Mot de passe : trainee Nouveau shell [/bin/sh]: /bin/bash Shell a changé.
Le Prompt
Le prompt d’un utilisateur dépend de son statut :
-
$ pour un utilisateur normal
-
# pour root
Rappeler des Commandes
Le shell/bin/bashpermet le rappel des dernières commandes saisies. Afin de connaître la liste des commandes mémorisées, utilisez la commande history :
[trainee@centos ~]$ history ... 203 vi script 204 echo "Entrez un nombre entier : " 205 read nombre 206 chmod u+x script 207 ./script 208 echo "Entrez un nombre entier : " 209 read nombre 210 exit 0 211 ls 212 ./script 213 vi script 214 vi Téléchargements/vitexte 215 vim -r Téléchargements/vitexte 216 vi Téléchargements/vitexte 217 cat .bash_profile 218 history
L’historique des commandes est en mode emacs par défaut. De ce fait, le rappel de la dernière commande se fait en utilisant la touche [Flèche vers le haut] ou bien les touches [CTRL]-[P] et le rappel de la commande suivante se fait en utilisant la touche [Flèche vers le bas]ou bien les touches[CTRL]-[N]:
| Caractère de Contrôle | Définition |
|---|---|
| [CTRL]-[P] (= flèche vers le haut) | Rappelle la commande précédente |
| [CTRL]-[N] (= flèche vers le bas) | Rappelle la commande suivante |
Il est aussi possible de rappeler la dernière commande de l’historique en utilisant les caractères!!:
[trainee@centos ~]$ ls aac bca Documents Modèles Public Vidéos abc Bureau Images Musique Téléchargements xyz [trainee@centos ~]$ !! ls aac bca Documents Modèles Public Vidéos abc Bureau Images Musique Téléchargements xyz
Vous pouvez rappeler une commande spécifique de l’historique en utilisant le caractère!suivi du numéro de la commande à rappeler :
[trainee@centos ~]$ !5 dir aac bca Documents Modèles Public Vidéos abc Bureau Images Musique Téléchargements xyz
Le paramétrage de la fonction du rappel des commandes est fait à partir du fichier /etc/profile. Dans ce fichier, les variables concernant le rappel des commandes peuvent être définis. Le plus important est HISTSIZE:
[trainee@centos ~]$ cat /etc/profile # /etc/profile # System wide environment and startup programs, for login setup # Functions and aliases go in /etc/bashrc ... HOSTNAME=`/bin/hostname 2>/dev/null` HISTSIZE=1000 ... unset pathmunge
Vous noterez que dans le cas précédent, la valeur de HISTSIZE est de 1000. Ceci implique que les dernières mille commandes sont mémorisées.
Les commandes mémorisées sont stockées dans le fichier ~/.bash_history ou ~/ indique le répertoire personnel de l’utilisateur concerné :
[trainee@centos ~]$ nl .bash_history ... 203 vi script 204 echo "Entrez un nombre entier : " 205 read nombre 206 chmod u+x script 207 ./script 208 echo "Entrez un nombre entier : " 209 read nombre 210 exit 0 211 ls 212 ./script 213 vi script
La comparaison du contenu de ce fichier avec la sortie de la commande history démontre que les deux sont diffèrents. En effet, le fichier .bash_history ne contient pas les lignes 214 à 218 de la sortie de la commande history.
Copyright © 2012 FenestrOs.com. All Rights Reserved. Tous Droits Réservés.
